(1)、(2)题
编程,向内存0:200~23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括“mov ax, 4c00h"和"int 21h"。
只能用9条指令,就必须利用循环;如果用两个数据来表示偏移,即一个表示200H~23FH,另一个表示要传送的数据0~63,发现这样9条命令根本不够,所以就要想到更换段地址(因为内存空间的低位00~3FH和传送的数据正好重合)。
有两种写法:
第一种
assume cs:code
code segment
mov ax, 20h
mov ds, ax
mov cx, 40h
mov bx, 0
s:mov [bx], bl
inc bl
loop s
mov ax, 4c00h
int 21h
code ends
end
第二种
assume cs:code
code segment
mov ax, 20h
mov ds, ax
mov cx, 40h
mov bx, 0
s:mov [bx], bx
inc bx
loop s
mov ax, 4c00h
int 21h
code ends
end
第一种很好理解,传送数据的寄存器是bl
mov [bx], bl
即一个八位的寄存器,每次将字节大小的数据传送到目标地址。
但是第二种,我们会发现,传送数据的寄存器是bx
每次