实验名称:[BX]和loop的使用

一:实验目的

  1. 学会使用[bx]和loop。
  2. 使用debug练习一些简单的编程。
  3. 练习使用debug调试汇编程序的方法。

二:实验内容及步骤

内容:(1): 编程,向内存0:200-0:23F依次传送数据0-63(3FH)。

步骤:(1):

1)、进入Debug程序

2)、运行edit,在edit中编辑程序

 

3)、将程序保存到当前目录命名为1.asm,退出edit,结束对源程序的编辑。

4)、将源程序编译,生成目标文件。

5)、对目标文件连接,生成可执行文件

6)、执行可执行文件。

结果代码(1):

assume cs:code

code segment

mov ax,0

mov ds,ax

mov al,0

mov bx,200h

mov cx,64

s:mov [bx],al

inc al

inc bx

loop s

mov ax,4c00h

int 21h

code ends

end

内容(2):编程,向内存0:200-0:23F依次传送0-63(3FH),程序中只能使用9条指令,9条指令中包括“mov ax,4c00h”和“int 21h”。

步骤(2):

1)、运行edit,在edit中编辑程序

结果代码(2):

assume cs:code

code segment

mov ax,20h

mov ds,ax

mov bx,0

mov cx,64

s:mov [bx],bl

inc bx

loop s

mov ax,4c00h

int 21h

code ends

end

内容(3

下面的程序的功能是将“mov ax,4c00”之间的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果

复制的是指令,指令存放在cs:ip中,所以第一个空应该填cs

第二个空填写17,可以在执行前查看一下占用的字节数

主要是如何获取大小,可以给cx赋一个任意值,在dosbox里面debug,看生成的程序里面"mov ax, 4c00h"的位置是多少,再填入其中。

assume cs:code

code segment

        mov ax,cs

        mov ds,ax

        mov ax,0020h

        mov es,ax

        mov bx,0

        mov cx,23

s:  mov al,[bx]

        mov es:[bx],al

        inc bx

        loop s

       

        mov ax,4c00h

        int 21h

code ends

end

步骤(3):

1)、运行edit,在edit中编辑程序

 

2)将程序保存到当前目录命名为1.asm,退出edit,结束对源程序的编辑。

3)、将源程序编译,生成目标文件。

5)、对目标文件连接,生成可执行文件

6

6)、追踪调试

结果(3):

三:实验过程中出现的问题及解决方法

写完程序编译后经常出现一些小错误,开始对过程不是很熟练,每题敲多遍慢慢就熟练了,问题也逐渐减少。

四:实验总结

通过此次实验我学会了使用【bx】和loop,熟悉了利用debug进行一些简单的编程,以及更加熟练使用debug的调试过程。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐