实验名称:[BX]和loop的使用
一:实验目的
- 学会使用[bx]和loop。
- 使用debug练习一些简单的编程。
- 练习使用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的调试过程。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)