汇编语言实验指导/报告 - 3 -明
① —R CX(回车) 显示 CX 当前值 键入 :3040 (回车)(将3040送入CX) ② —R BX (回车) 显示 BX 当前值 键入 : :0000(回车)(将0000H送入BX) ③ —N MYFILE(回车)(给待写文件命令) ④ —W (回车) (12)比较指令—C 格式: C 范围 地址
比较两个内存块的内容,范围用第一个起始地址和块长或起始地址、结束地址说明,地址是第二块的起始地址。
(13)16进制运算指令—H 格式: H 值1 值2 求值l,值2的和与差(全为16进制数)。 (14)写端口命—O
格式: O 端口地址 字节 把一个字节数据由指定的端口输出。 (15)读端口命令—I 格式: I 端口地址 从指定端口输入一个字节并显示。 (16)传送命令—M
格式: M 范围 地址 把指定范围的内容传送到指定的地址开始的内存块中。 (17)检索命令—S 格式: S 范围 字符串 在指定范围内检索某个字符串。 (18)退出命令一Q
格式: Q 结束DEBUG的运行,不保存内存中的被调试文件(若要保存,先用W 指令),返回DOS。 4.使用DEBUG命令的注意事项
(1)DEBUG命令只采用16进制数;故不要加“H”后缀。
(2)标志寄存器的8个标志位的值采用符号标志;分别表示标志的值1和0。 溢出标志OF: OV(溢出), NV(不溢出) 方向标志DF: DN(减量), UP(增量) 中断允许标志IF: EI(允许), DI(禁止) 符号标志SF: NG(负), PL(正) 零标志ZF: ZR(零), NZ(非零) 进位标志CF: CY(有), NC(无) 奇偶标志PF: PE(偶), PO(奇) 辅助进位标志AF: AC(有), NA(无)
(3)在“—”提示符下键入命令关键字符,若命令带有参数则应在关键字符后紧跟着输入第一个参数,不要随意加空格符,因为空格符是参数之间的间隔符。
(4)命令结尾应按回车键,此命令才生效,除e命令外,一个命令执行完重新给出“—”
- 4 - 汇编语言实验指导/报告
DEBUG提示符。使用A命令时,每输入一条指令就按一次回车键,屏幕立即显示下一个地址,若要结束A命令,则不要输入指令只按回车键。
(5)命令中的地址参数以段:偏移量给出,若只给出偏移量,则使用的缺省段A,U,G,T,L,W诸命令的缺省段是CS,C,D,E,F,M,S诸命令的缺省段是DS。
(6)使用W写命令之前要记住检查或修改BX,CX积存器的值使其等于或大于欲写入文件的字节长度值。
(7)DEBUG承认Ctrl+Break(中止)、Ctrl+Nomlock(暂停显示)等DOS控制键功能。 三、实验内容
思考: 如AX=0012H,BX=0034H,要求把它们装配在一起形成AX=1234H。 利用课堂上讲过的算术逻辑指令自己编程序
B.汇编语言程序上机操作 一.实验目的
1.学会汇编语言程序上机操作,包括汇编语言程序的编辑、汇编、链接、调试和运行;
2.学会常用的伪指令使用,掌握汇编语言的分段结构。 二.汇编语言程序的上机过程。
1.使用HJASM编辑软件编辑汇编语言文本,得到扩展名为ASM的汇编语言程序的源文件
2.对汇编语言源程序进行汇编,得到扩展名为.OBJ的目标码文件
3.对目标码文件进行链接,得到扩展名为EXE的地址浮动的可执行文件
4.使用DEBUG命令加载汇编语言程序(EXE)到内存,然后在DEBUG环境下调试汇编语言程序 三.实验内容
1.建立汇编语言源程序文件(ASM)
例:把40个字母a的字符串从源缓冲区传送到目的缓冲区
汇编语言实验指导/报告 - 5 -明
2.在DEBUG环境下运行程序
一般来说,对于我们自己设计的程序,在DEBUG下加载,然后用DEBUG命令控制程序的运行。便于发现程序的错误,加以修改源程序,重新汇编,链接,然后再运行。如此反复多次,最终就可完成程序的调试。
1.使用U命令 —U 18F4: 0000 lE PUSH DS 000l 2BC0 SUB AX,AX 0003 50 PUSH AX 0004 B8F618 MOV AX,18F6 0007 8ED8 MOV DS,AX
- 6 - 汇编语言实验指导/报告
0009 B8F918 MOV AX,18F9 000C 8EC0 MOV ES,AX 000E 8D360000 LEA SI[0000] 0012 8D3EOO00 LEA DI[0000] 0016 FC CLD
00l7 F92800 MOV CX,0028 代码段段地址 偏移地址 机器代码 汇编 18F4 00lA F3 REPZ 00lB A4 MOVSB 00lC CB PETF ↗
断点,程序执行到此就结束 根据反汇编清单中,得到 CS:18F4 DS:18F6 ES:18F9 断点:00le 2.使用D命令 —D 18F6:0↙
61...... 61...... 61......61 61...... 61...... 61......61
61...... 61 ——共有40个‘a’ 注:因为(DS)=18F6,所以上条指令是查看DS段的内容。 一D 18F9:0↙ 无40个‘a’
注:因为(ES)=18F9,所以上条指令是查看ES段的内容。 使用D命令观察数据段内容有40个‘a’,观察附加段内容无40个‘a’ 3.使用G命令 —G1C↙
因为IC偏移量是程序搬运结果的位置,所以运行程序完成40个‘a’搬运到附加段中,此时附加段有40个‘a’,同时数据段40个‘a’也存在。
4.程序运行之后再看内存变化
—D18F6:0↙ 61...... 61......61, 61......61 61...... 61......61, 61......61 61...... 61
—D18F9:0↙ 61...... 61......61, 61......61 61...... 61......61, 61......61 61...... 61 5.退出Q命令
—Q 退出DEBUG 四、自己设计一个简单程序,上机调试。
相关推荐: