实验一-8086汇编语言上机调试及基本操作_第1页
实验一-8086汇编语言上机调试及基本操作_第2页
实验一-8086汇编语言上机调试及基本操作_第3页
实验一-8086汇编语言上机调试及基本操作_第4页
实验一-8086汇编语言上机调试及基本操作_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实验一:8086汇编语言上机调试及基本操作(验证性)1、实验目的:(1)掌握常用DEBUG命令: G,D,R,T,U,Q。(2)掌握工具软件EMU8086。(3)掌握完整程序设计方法的格式,能正确书写数据段,代码段等。(4)掌握简单的数值转换算法2、实验说明:计算机中的数值有各种表达方式,这是计算机的基础。掌握各种数制之间的转换是一种基本功。3、程序框图:对于0-999(即000H-3E7H)范围内的二进制数4、参考程序:; 将 AX中的三位数拆为三个BCD码, 并存入 Result 开始的三个单元DATA SEGMENT ; 数据段RESULT_1 DB 1 RESULT_2 DB 1 RE

2、SULT_3 DB 1 DATA ENDSSTACK SEGMENT STACK ; 堆栈段 STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT ; 代码段 ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK START: MOV AX, DATA MOV DS, AX ; 设置数据段 MOV AX, STACK MOV SS, AX ; 设置堆栈段 LEA SP, STACK_TOP ; 设置栈顶指针 MOV AX, 2afH MOV CL, 100 DIV CL MOV RESULT_1, AL

3、; 除以 100, 得百位数 MOV AL, AH MOV AH, 0 MOV CL, 10 DIV CL MOV RESULT_2, AL ; 余数除以 10, 得十位数 MOV RESULT_3, AH ; 余数为个位数 MOV AX,4C00H ; 返回DOS INT 21H ; CODE ENDS END START ; 最后一行要按回车键5、实验及报告要求:1) 用合适的编辑软件编辑以上源文件并存入合适目录;要求补充注释未注释的伪指令和指令;2) 分别在和下编译、连接生成可执行文件,比较两个环境下生成的机器码的长度和内容;试指出第、条指令的和机器码。3) 分别在和emu8086下调试

4、该可执行文件,给出程序运行时的各段地址(?,?)举例说明debug的t,d,g,u等命令操作方法并对寄存器的变化作出解释;试改变被转换的三位数,并解释转换过程中标志寄存器中各标志位的结果;如何观察转换结果的变化?4) 写出完整的实验报告,特别是“实验结果”与“实验总结体会”部分,是评分的主要依据。5) 实验总结中要求结合实验中的经验、教训或体会对汇编语言格式、调试方法和微机原理学习方法作出总结。6、思考题:1) 用单步执行命令t运行程序, 运行到mov ax, 4c00h, int 21h指令后,cs和IP寄存器内容前后有何变化?产生变化的原因是什么?2) 试写出将BCD转换成二进制码的汇编程

5、序。【实验辅导资料】1 汇编语言程序的上机过程在计算机上运行汇编语言程序的步骤是:1用编辑程序建立ASM源文件;2用MASM程序把ASM文件转汇编成OBJ文件;3用LINK程序把OBJ文件转连接成EXE文件;4用DOS命令直接键入文件名就可执行该程序。图1 汇编语言程序的建立及汇编过程1. 检查源程序;2. 测出源程序中的语法错误,并给出出错信息;3. 产生目标文件(.OBJ),并可给出列表文件(同时列出汇编语言源程序和机器语言目标程序的文件,称之为.LST文件)和交叉索引文件(列出程序中使用的符号、变量和标号以及引用情况,称之为.CRF文件)。4. 展开宏指令。1.1建立汇编语言的工作环境为

6、运行汇编语言程序至少要在磁盘上提供以下文件:1编辑程序,如EDIT.EXE2汇编程序,如MASM.EXE3连接程序,如LINK.EXE4调试程序,如DEBUG.COM1.2 汇编语言源程序上机过程1.建立汇编源程序ASM文件2.汇编产生OBJ文件3. 链接产生EXE文件4. 程序的调试和执行5. 生成EXE或COM文件2 汇编语言程序格式存储器的物理地址由段基址和偏移地址组合而成,任何一个逻辑段,无论是代码段,数据段,堆栈段,附加段都必须进行段定义,以便连接程序把不同段和模块连接成一个可执行程序。此外,还必须明确段和段寄存器之间的关系,这可使用段分配语句来完成。1、段定义语句4个逻辑段不一定全

7、部要定义,通常代码段和数据段是必须的,附加段可以省略。但当代码段中使用了串指令,必须设置附加段作目标串基址用,附加段也可用来存放数据,增大数据段容量。一般程序结构:(1)代码段:存放程序执行的指令(2)数据段:存放程序所需的数据(3)堆栈段:存放程序执行的临时信息数据段定义格式:DATA SEGMENT ; 数据段RESULT_1 DB 1 RESULT_2 DB 1 RESULT_3 DB 1 DATA ENDS 附加段的定义:EXTRA SEGMENT DEST_BUFFER DB 50 DUP (?)EXTRA ENDS堆栈段的定义:STACK SEGMENT STACK ; 堆栈段 S

8、TA DB 64 DUP(0)STACK_TOP DB 0STACK ENDS 2、段分配语句在8086/8088系统中存储器采用分段结构,各段容量64K字节,用户可以设置多个逻辑段,但只允许4个逻辑段同时有效,段分配语句用来完成将逻辑段分别定义成代码段、数据段、堆栈段和附加段。由于ASSUME伪指令只指定某个段分配给哪个段寄存器,并将代码段的段基址自动装入CS寄存器中,而不能自动把其它段基址装入相应的段寄存器中,所以在代码段的开始要有一段初始化程序完成这一工作。对堆栈段来说除了将段基址送入SS寄存器外,还要将栈顶偏移地址置入堆栈指示器SP中。ASSUME CS:段名, DS:段名, ES:段

9、名, SS:段名(一)DOS下的汇编调试:步骤1 汇编调试所需的文件已拷贝在D:MASM子目录下,它们是:(1) 用文本编辑软件UltraEdit 、WINDOWS 中的记事本或其它的文本编辑器输入汇编语言程序, 注意在最后一行的 END输入完后要按一次回车键,保存的源文件的扩展各一定要是 ASM如: EXAMPLE.ASM(2) MASM.EXE 宏汇编工具,把 ASM源文件生成OBJ目标文件,(3) LINK.EXE 链接工具,把OBJ文件生成EXE文件(4) DEBUG.COM 调试工具,可对程序进行调试,跟踪2、进入 Windows XP 的命令行方式(在运行程序栏中输入command

10、/cmd 并按回车键) 或 Windows ME 和 Windows 98 的 MS-DOS 方式 ( 在 开始 程序 附件 MS-DOS 方式 )。3、在 DOS 提示符下进行汇编 、连接 、动态调试等操作。 例如: 对源文件 EXAMPLE.ASM 进行的操作 D:MASMMASM EXAMPLE; 汇编源程序操作 D:MASMLINK EXAMPLE; 连接并生成扩展名为 .EXE 的可执行文件 D:MASMDEBUG EXAMPLE.EXE 对可执行文件进行调试 3、要求掌握的调试命令(在 DEBUG 中使用的命令) a: U - 反汇编命令 用法: -U 代码段地址:起始偏移地址 如

11、:-U CS:100 b: D - 显示内存中的数据命令 用法: -D 数据段地址:存放数据的偏移地址如:-D DS:00 20 c: T - 单步执行程序命令 用法: -T 要执行的指令条数 如:-T 3 d: G - 连续执行程序命令 用法: -G=代码段地址:指令的起始偏移地址指令的结束偏移地址 如: -G=CS:100 106 注意: 结束地址一定要是操作码的所在地址 e: R - 查看和修改寄存器数据命令 用法: -R 回车 如:-R AX f: F - 对内存单元填充数据命令 用法: -F 数据段地址:偏移首地址 偏移未地址填入的数据 如: -F DS:100 120 ff g:

12、Q - 退出”DEBUG“ 应用程序命令 4、应用例子及操作步骤 将 AX 中的十六进制数拆为三个 BCD 码, 并存入 Result_1, Result_2, Result_3 的三个单元中。DATA SEGMENT ; 数据段RESULT_1 DB 1 RESULT_2 DB 1 RESULT_3 DB 1 DATA ENDSSTACK SEGMENT STACK ; 堆栈段 STA DB 64 DUP(0)STACK_TOP DB 0STACK ENDSCODE SEGMENT ; 代码段 ASSUME CS:CODE , DS:DATA , ES:DATA , SS:STACK STA

13、RT: ; 程序开头必须要有的五条指令 MOV AX, DATA MOV DS, AX ; 设置数据段 MOV AX, STACK MOV SS, AX ; 设置堆栈段 LEA SP, STACK_TOP ; 设置栈顶指针;- ; 程序的中间部分 MOV AX, 587 MOV CL, 100 DIV CL MOV RESULT_1, AL ; 除以 100, 得百位数 MOV AL, AH MOV AH, 0 MOV CL, 10 DIV CL MOV RESULT_2, AL ; 余数除以 10, 得十位数 MOV RESULT_3, AH ; 余数为个位数 ;- ; 程序结束必须要有的两

14、条指令 MOV AX, 4C00H ; INT 21H ; ;- CODE ENDS END START ; 最后一行要按回车键 、对源程序进行汇编产生OBJ文件-编译过程D:MASM>MASM EXAMPLE; Microsoft (R) Macro Assembler Version 5.00Copyright (C) Microsoft Corp 1981-1985, 1987. All rights reserved. 51514 + 408822 Bytes symbol space free 0 Warning Errors 0 Severe Errors、对目标文件进行连接

15、产生EXE文件-连接过程D:MASM>LINK EXAMPLE; Microsoft (R) 8086 Object Linker Version 3.05Copyright (C) Microsoft Corp 1983, 1984, 1985. All rights reserved.、对可执行文件进行调试 -调试过程D:MASM>DEBUG EXAMPLE.EXE -U CS:0000 用反汇编命令“U 代码段地址:起始偏移地址”显示出程序的标识符-U 0 2C160D:0000 B80716 MOV AX,1607 ; 程序的起始地址是 160DH:0000H 160D:0

16、003 8ED8 MOV DS,AX160D:0005 B80816 MOV AX,1608160D:0008 8ED0 MOV SS,AX160D:000A 8D264100 LEA SP,0041160D:000E B84B02 MOV AX,024B160D:0011 B164 MOV CL,64160D:0013 F6F1 DIV CL160D:0015 A20000 MOV 0000,AL160D:0018 8AC4 MOV AL,AH160D:001A B400 MOV AH,00160D:001C B10A MOV CL,0A160D:001E F6F1 DIV CL160D:0

17、020 A20100 MOV 0001,AL160D:0023 88260200 MOV 0002,AH160D:0027 B8004C MOV AX,4C00 ; 程序的结束地址是 160DH:0027H160D:002A CD21 INT 21160D:002C 9E SAHF- 执行程序前观察内存中的数据-D DS:0000 ; 显示内存中的数据命令,命令“D 数据段地址:存放数据的偏移地址” 显示内存中的数据 -D DS:0 3015F7:0000 CD 20 00 A0 00 9A F0 FE-1D F0 3C 03 5D 0F 77 03 . .<.w.15F7:0010 5

18、D 0F 04 03 5D 0F 4C 0F-01 01 01 00 02 FF FF FF .L.15F7:0020 FF FF FF FF FF FF FF FF-FF FF FF FF E6 15 4C 01 .L.-G=CS:0000 0027 ; 连续执行程序命令代码段地址:指令的起始偏移地址指令的结束偏移地址AX=0708 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=0027 NV UP EI PL NZ NA PO NC160D:0027 B80

19、04C MOV AX,4C00- 执行程序后观察内存中的数据(结果 )-D DS:0000 ; 用显示内存中的数据命令命令“D 数据段地址:存放数据的偏移地址”显示内存中的数据 -D DS:00 ; 观察内存中的数据1607:0000 05 08 07 00 00 00 00 00-00 00 00 00 00 00 00 00 .1607:0010 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .1607:0020 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .-R IP 修改IP寄存器中的

20、数据IP 0027 显示修改前的数据:00 输入修改的数据-T ;单步执行程序命令(执行一条指令)AX=1607 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=0003 NV UP EI PL NZ NA PO NC160D:0003 8ED8 MOV DS,AX-T3 ;执行3条指令AX=1607 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=

21、160D IP=0005 NV UP EI PL NZ NA PO NC160D:0005 B80816 MOV AX,1608AX=1608 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608 CS=160D IP=0008 NV UP EI PL NZ NA PO NC160D:0008 8ED0 MOV SS,AXAX=1608 BX=0000 CX=000A DX=0000 SP=0041 BP=0000 SI=0000 DI=0000DS=1607 ES=15F7 SS=1608

22、 CS=160D IP=000E NV UP EI PL NZ NA PO NC160D:000E B84B02 MOV AX,024B-R ; 查看寄存器数据命令AX=0302 BX=0000 CX=000A DX=0000 SP=0014 BP=0000 SI=0000 DI=0000DS=1607 ES=1607 SS=12A0 CS=129D IP=0028 NV UP EI PL NZ NA PO NC129D:0028 B8004C MOV AX,4C00-R AX ;查看和修改寄存器数据命令AX 0302:FFFF-R ; 查看寄存器数据命令AX=FFFF BX=0000 CX=

23、000A DX=0000 SP=0014 BP=0000 SI=0000 DI=0000DS=1607 ES=1607 SS=12A0 CS=129D IP=0028 NV UP EI PL NZ NA PO NC129D:0028 B8004C MOV AX,4C00-F 数据段地址:偏移首地址 偏移未地址填入的数据-F DS:0000 0030 DF ; 对内存单元填充数据 -D DS:00 ; 观察内存中的数据1607:0000 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF .1607:0010 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF .1607:0020 DF DF DF DF DF DF DF DF-DF DF DF DF DF DF DF DF .1607:0030 D

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论