1.编程,向内存0:200-0:23F依次传送数据0~63(3FH)
assume cs:code
code segment
mov ax,0
mov ds,ax
mov bx,200h
mov cx,64
mov al,0
s:mov [bx],al
inc bx
inc al
loop s
mov ax,4c00h
int 21h
code ends
end
2.编程,向内存0:200-0:23F依次传送数据0~63(3FH),只能使用9条指令。
其中包括mov ax,4c00h 和int 21h
分析:
除去两条后,现在只能剩7条了。
那么再来看下,
cx=64
loop s
又占了两条
只剩下五个位置了。
这时候就要简化上面的程序了
这时候就要从改变段的表示入手了
代码:
assume cs:code
code segment
mov ax,20h(为了简化代码)
mov ds,ax
mov bx,0
mov cx,64
s:mov [bx],bl
inc bx//换成bl也可以
loop s
mov ax,4c00h
int 21h
code ends
end
注意到低位加的时候是相同的,简化了代码
3.补全下面的程序,其功能是将“mov ax,4c00”之前的指令复制到内存0:200处。
assume cs:code
code segment
mov ax,cs//由于复制的是内存中的数据,而cs:ip指示了内存中的地址,所以将cs的值传递给ax。
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,17h//前面的源程序在内存中总共占了23字节,这个是将源程序编译连接之后用debug里面的U命令查看即可
s:mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end