实验四

1.使用loop和[bx],实现向内存 b800:07b8 开始的连续 16 个字单元重复填充字数据 0403assume cs:code

code segment
mov ax,0b800h
mov ds,ax
mov bx,07b8h
mov cx,16

s: mov [bx],0403h
    inc bx
  inc bx
loop s mov ax,4c00h int 21h code ends end




2. 综合使用 loop,[bx],编写完整汇编源程序,实现向内存 0:200~0:23F 依次传送数据0~63(3FH)。
assume cs:code
code segment
    mov ax, 0
    mov ds, ax
    mov bx, 200h
    mov cx, 64

  s:  mov [bx], ax
    inc ax
    inc bx

    loop s

    mov ax, 4c00h
    int 21h

 

code ends
end

  

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

1.要复制代码的话从cs开始复制,所以吧cs给ds

2.一开始不太确定第二个空的长度,先反汇编一下

这里遇到了一个小问题,debug 53显示了Extended error 2

原因是没有加.exe,这样会导致反汇编错误,虽然前面没有加后缀名,但是这里要加嗷,所以建议还是都加后缀名比较好

修改了之后,就可以了。

发现mov   ax,4c00h在0017这里。所以第二个空就是17h。

之后的就不用多说了嗷,g命令直接运行之后,用d命令看0000:0200,发现已经是机器码了。

实验总结:

对于bx+1用add bx,2会报错,所以要用inc bx

加深了各种操作的理解。

posted on 2018-11-19 19:59  _刘大碗  阅读(143)  评论(0编辑  收藏  举报