【汇编语言】(王爽著第三版)实验四

时间:2021-07-15 00:59:45

实验四:【bx】和loop的使用

实验1. 综合使用 loop,[bx],编写完整汇编程序,实现向内存 b800:07b8 开始的连续 16 个 字单元重复填充字数据 0403H。

 

1.源代码

assume cs:code
code segment
mov ax,0b800h
mov ds,ax
mov bx,07b8h
mov cx,16
s: mov [bx],0403h
add bx,2
loop s

mov ax,4c00h
int 21h
code ends
end

进入环境编译

【汇编语言】(王爽著第三版)实验四

然后保存文件

2.masm编译 link链接 最后直接执行,得到实验结果截图

【汇编语言】(王爽著第三版)实验四

 

 【汇编语言】(王爽著第三版)实验四

 

将源代码程序中字数据 0403H→修改为 0441H,再次运行,截图显示运行结果:

【汇编语言】(王爽著第三版)实验四

 实验二

1.源代码

assume cs:code
code segment
mov ax,0020h
mov ds,ax
mov bx,0
mov ax,0
mov cx,64
s: mov [bx],al
add bx,1
add al,1
loop s

mov ax,4c00h
int 21h
code ends
end

【汇编语言】(王爽著第三版)实验四

2.汇编、链接无误后,灵活使用 debug 的 t 命令、g 命令、p 命令调试,用 d 命令 查看 0:200~0:23F,确认是否将 0~63 传送至此段内存区域

【汇编语言】(王爽著第三版)实验四

实验三

1.源代码

assume cs:code
code segment
mov ax,cs mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,0
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s

mov ax,4c00h
int 21h
code ends
end

这段代码实际上是将[bx]中的数据传入到0:200处,ds中存放的是cs的值,所以将ds赋值为cs。

cx的值是loop循环的次数,在执行本实验时,指令的复制实际上是向内存单元写入数据,而程序段的长度决定了循环写入的次数,所以cx的值为程序段的长度。

2.用r命令查看一开始cx的值,再用u命令反汇编

【汇编语言】(王爽著第三版)实验四

3.修改cx的值为0017h:

【汇编语言】(王爽著第三版)实验四