汇编语言之实验四

汇编语言程序设计实验四

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。

 

复制成功

原文地址:https://www.cnblogs.com/bowentianxia/p/9985019.html