第 5 章:[BX]和 loop 指令

问题 5.1

指令

ax

bx

ds

内存

mov ax,2000H

2000

/

/

mov ds,ax

/

2000

mov bx,1000H

1000

mov ax,[bx]

(21000) = 00BE

inc bx

1001

inc bx

1002

mov [bx],ax

(21002)=00BE

inc bx

1003

inc bx

1004

mov [bx],ax

(21004)=00BE

inc bx

1005

mov [bx],al

(21005)(byte)=BE

inc bx

1006

mov [bx],al

(21006)(byte)=BE

内存中的情况

地址(Hex)

21000

BE

21001

00

21002

BE

21003

00

21004

BE

21005

00->BE

21006

BE

21007

实验 4 [bx] 和 loop 的使用

(1)编程,向内存 0:200~0:23F 依次传送数据 0~63(3FH)。

(2)编程,向内存 0:200~0:23F 依次传送数据 0~63(3FH),程序中只能使用 9 条指令, 9 条指令中包括 “mov ax,4c00h” 和 “int 21h”。

答案:同(1)。

(3)下面的程序的功能是将 “mov ax,4c00h " 之前的指令复制到内存 0:200 处,补全程序。上机调试,跟踪运行结果。

提示:

(1)复制的是什么?从哪里到哪里?

答案:复制的是存放程序代码的数据。从 XXXX:0h~XXXX:17h

(2)复制的是什么?有多少个字节?你如何知道要复制的字节的数量?

答案:复制的是程序代码的数据。23个字节。先将第2个补全空位随便设为1,编译链接汇编代码后,debug 可执行文件,用 u 观察 mov ax,4c00h 之前代码(为 0000~0016h,总长度为23)。

注:之后可以执行完程序(g 001ah),并查看 0:200 处的内容是否为该部分代码(u 0:200)。

参考资料

Last updated