佛山科学技术学院
实 验 报 告
课程名称 汇编语言程序设计
实验项目 实验一 宏汇编(MASN)及汇编语言上机过程 专业班级 13 网络工程 班 姓 名 - ---- 学 号
指导教师 杨定安 成 绩 日 期 2015.10. 25 一、实验目的
1.通过实验了解和熟悉微机系统的配置。
2.学习在DEBUG状态下输入汇编源程序的方法。 3.初步掌握调试(在DEBUG状态下)的过程。
二、实验原理
1. 本实验要求在DEBUG状态下输入汇编源程序,并用DEBUG命令进行调试。用单步跟踪的方法验
证指令的功能。
2. 以下是给定的参考程序,并在实验时在每条指令的“; ”符号右边按要求填写指令的执行结果。
注:⑴ 微机进入DEBUG状态下之后,一切立即数和地址数据均被默认为十六进制数,在输入时数的后面不加后缀“H”;
⑵ 在DEBUG状态下执行程序时,“INT 20H”指令可使系统执行完该指令前的程序时返回到“-”提示符状态,并且恢复CS和IP寄存器原来的值。
三、实验仪器
微机一台,U盘一块。
四、实验步骤
1.开机和关机操作顺序
开机:先打开微机外部设备电源开关,如显示器,最后打开主机电源开关。 关机:与开机相反,先关掉主机电源开关,然后关闭所有外设的电源开关。 2. 装入DEBUG程序
若计算机系统启动正常,可以进入MASM文件夹或MASM5文件夹从磁盘上调用DEBUG,程序到内存。如是WINDOWS环境下,先运行CMD命令,然后运行CD MASM命令,再运行DEB2000命令。一般C盘上装有DEBUG和DEB2000软件,若没有,可以用复制命令从其它盘拷贝过来,然后从装有DEBUG和DEB2000软件的磁盘上调用DEBUG和DEB2000软件程序。例如:
C :\\MASM> DEB2000↙ (↙回车符) - (-DEBUG 提示符)
当显示器出现提示符“-”时,说明已进入DEBUG状态,这时,可用DEBUG命令进行操作。
4. 用DEBUG的Register命令检查所有寄存器内容,并作记录,主要是R命令 5. 用DEBUG的Assemble命令输入汇编源程序。重点是A,命令和T命令。
五、输入程序得出实验结果
MOV AX, 2000 ; AL=00
MOV DS, AX ; DS=2000 NOT AX ; AX=DFFF XOR AX, AX ; AX=0000 DEC AX ; AX=FFFF INC AX ; AX=0000 MOV BX, 2030 ; BH=20 MOV SI, BX ; SI=2030 MOV [SI], BL ; [2030H]=30
MOV WORD PTR[SI], 10F ; [2030H]= 0F [2031H]=01 MOV DI, SI ; DI=2030 MOV [DI+50], BH ; [DI+50H]=20 MOV BH, [SI] ; BH=0F MOV BL, [DI+50] ; BL=20 MOV SP, 5000
PUSH AX ; AX= 0000 [SS:4FFEH]=00 [SS:4FFFH]=00 PUSH BX ; BX=0F20 [SS:4FFCH]=20 [SS:4FFDH]=0F POP AX ; AX=0F20
POPF ; F=NV UP EI PL ZR AC PE NC NEG BX ; BX=F0E0 XCHG BX, AX ; BX=0F20
STD ; F=NV DN DI NG NZ NA PO CY STI ; F= NV DN EI NG NZ NA PO CY CLD ; F= NV UP DI NG NZ NA PO CY CLI ; F= NV UP DI NG NZ NA PO CY
ADC DI, 2050 ; DI=4081 F= NV UP DI PL NZ NA PE NC ADC SP, DI ; SP=9081 F= OV UP DI NG NZ NA PE NC ADC AX, 1500 ; AX=05E0 F= NV DN DI NG NZ NA PO CY SUB AX, BX ; AX=F6C0 BX=0F20 SHL AH, 1 ; AH=EC RCL AX, 1 ; AX=D981 SHR BH, 1 ; BH=07 RCR BL, 1 ; BL=90 MOV CL, 4 MOV DX, 80F0
ROL DX, CL ; DX=0F08 CL=04
INT 20 ; CS=00A7 IP=1072
先通过-A指令输入程序,再通过-T指令输出结果,部分程序运行结如下:
实验结果与理论分析相同。 六,实验结果
六、实验小结
通过这次动手独立完成实验,使汇编程序设计语言的一些理论知识与实践相结合,,巩固了我的理论知识,第一次接触汇编实验有点不知所措,在请教老师后学习到DEBUG状态是先用-A指令输入程序代码,每个指令都有编号,通过输入指令的编号可以修改输入过的指令,然后通过-T指令输出每个指令的结果。输了三次程序代码最后才无误的输入了整个程序,debug状态汇编不能像高级语言一样输入过程能随意方便修改代码有点麻烦,只有通过耐心认真的一个字母字母输入程序,体会汇编程序每个指令的代表意义和作用。