汇编语言_王爽 实验4 [bx]和loop的使用
4.1
编程,向内存0:200~0:23F依次传送数据0~63(3FH)。
代码:
assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov cx,40h
s: mov ds:[bx],bx
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
- 0:200~0:23F可以看作是0020:0~0020:3F,所以把0020h传入寄存器ds
- 传送数据0~63,需要进行64次循环,所以把40h传入寄存器cx
运行结果检查:
4.3
补全程序,该程序实现的功能是将“mov ax, 4c00h”之前的指令复制到内存0:200处,补全程序,上机调试,跟踪运行结果。
代码:
assume cs:code
code segment
mov ax,cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,17h
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
- CS为代码段寄存器,CPU将CS:IP指向的内容当作指令执行。
- 循环次数的确定:
通过debug该程序,观察到程序“mov ax, 4c00h”之前的指令占用的字节为0000h~0016h,作为中介的al可存一个字节,所以循环需要进行0017h次。
实验结果: