汇编语言之实验四
汇编语言程序设计实验四
1. 综合使用 loop,[bx],编写完整汇编程序,实现向内存 b800:07b8 开始的连续 16 个 字单元重复填充字数据0403H。
edit:
编译连接:
运行:出现红心
出错:一开始做实验时,编译连接运行结果是(如下图),和实验要求上不一样啊。
edit如图:
我想,ax寄存器里面应该是放着控制颜色符号的,bx是控制在显存地址上的,cx是控制循环语句次数的。
可是ax寄存器里面存放的值我没有写错啊。。后来从错误显示符号的最后一位是白色菱形,得到提示。
ax是占一个字,但是bx地址每次只加一,导致后面不断覆盖前面内存单元。最后导致,指定位置显存上存储的值驴头不对马嘴。。
还是字与字节上出了错
若将源代码程序中字数据0403H→修改为0441H,再次运行,截图显示运行结果
2. 综合使用 loop,[bx],编写完整汇编源程序,实现向内存 0:200~0:23F 依次传送数据 0~63(3FH)。
(1)必做:综合使用loop, [bx], mov实现
(2)选做*:利用栈的特性,综合使用 loop,push 实现(限定仅使用 8086 中已学过 指令实现)
(1)edit
编译连接
运行测试
(2)此题参考于 https://www.cnblogs.com/-Anguvia-/p/9975156.html
不得不服,这奇思妙想。尤其是,让3f3e-0202以实现控制输出结果。
3.下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。
assume cs:code
code segment
mov ax, code ;或mov ax, cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx, 18h ;或mov cx, 17h ;或sub cx,5
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
根据cx寄存器,可知cx为1cH,因为在载入程序时,cx保存程序的长度,减去5是为减去mov ax,4c00h和int 21h的长度
所以,001cH-0005H=23 个
所以 cx 寄存器赋值为 17H。
复制成功