ImageVerifierCode 换一换
格式:DOCX , 页数:25 ,大小:52.35KB ,
资源ID:6432288      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6432288.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(工学汇编程序实验指导140.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

工学汇编程序实验指导140.docx

1、工学汇编程序实验指导140组成原理与汇编8088/8086汇编语言实验指导仰恩大学 计算机学院电子工程系 一、实验目的1初步了解8086/8088汇编程序的基本结构,利用Windows XP附件的写字板编辑简单的汇编语言源程序,形成扩展名为 .ASM 的文本文件格式(即汇编源程序)。2. 学习宏汇编程序MASM.EXE ,连接程序LINK.EXE,调试程序 DEBUG .EXE的使用。3. 在微机上、在Masm for Windows集成实验环境下,运行并调试8086/8088汇编源程序。二、上机前的准备1. PC机的操作系统可以是Windoes98,也可以是Windows XP。2硬盘上安装

2、Masm for Windows集成实验环境软件, 上面应有MASM、LINK、DEBUG等文件,还应有足够的空间以容纳你的汇编源程序。3. 学习以上三个文件的使用方法,准备好上机的源程序并认真去读懂它。三、用“写字板”编辑汇编的源程序1. 用“写字板”编辑好源文件LH, LH假设为李华同学的源程序文件名(下同),则文件名是LH.ASM ,文件的扩展名一定要用.ASM。然后保存在C:盘的目录下。2编辑你的源程序时,注意不要有空行、光标也不要超过最后一行。四、MASM.EXE编译程序的运行在Masm for Windows集成实验环境中打开LH.ASM文件,然后在点击运行项, 在其下拉菜单中点击

3、编译成目标文件(OBJ),如果你输入的文件完全正确,将在下面的栏中显示:编译源程序C:LH.ASM编译成功 汇编的目的是要形成目标文件,即机器代码文件,也就是LH.OBJ文件。该文件不是文本文件,因此用编辑软件是看不到的,看到的只是一些乱码。 五、 LINK.EXE 生成可执行文件的运行在Masm for Windows集成实验环境中点击运行项, 在其下拉菜单中点击生成可执行文件(EXE),如果你输入的文件完全正确,将在下面的栏中显示:编译源程序C:LH.ASM生成EXE文件成功 对LH.OBJ文件连接的主要目的是要生成LH.EXE文件。扩展名为.EXE文件是在DOS状态下的可执行文件。你只要

4、键入LH.EXE文件的文件名LH就可以运行文件。六、DEBUG.EXE调试程序的运行DEBUG是调试程序,它是对EXE文件进行调试。在Masm for Windows集成实验环境中点击运行项, 在其下拉菜单中点击DEBUG调试, 在屏幕上出现如下信息: -上面的-是DEBUG状态下的提示符,表示目前系统在DEBUG的控制之下。我们主要学习DEBUG的Q,R,U,G,D,E,F,T 命令。这些命令的使用方法是在-提示符后键入相应命令的字母,如:-Q回车后就立即返回DOS状态。上面各命令分别解释如下:1 -Q 表示退出DEBUG状态。2 -R 显示CPU中除FLAG寄存器外的14个寄存器的内容,对

5、于FLAG寄存器只显示它的OF,DF,IF,SF,ZF,AF,PF,CF的状态。它是用两个字母来表示是0还是1的。表示的字母如下: 标志位名OFDFIFSFZFAFPFCF为1对应符 OV DN EI NGZR AC PE CY、为0对应符 NV UP DI PL NZ NAPO NC 如想查看某一寄存器的内容,可在-R后键入寄存器名,如: -R AX AX 2B6F : 1200 上面第二行2B6F为AX中的内容,第三行冒号后的1200为你键入的要修改的内容。3. -U 它是反汇编调试命令。(选看)因为被调试的程序LH.EXE是机器码语言,必须翻译成汇编语言程序人们才好读懂。注意反汇编的范围

6、是在本段内。该命令有下面三种格式: -U -(它是将当前CS:IP所指的地址开始的机器码反汇编32个字节指令。)-U地址 -(地址是反汇编开始的地址,可以是偏移地址也可以是逻辑地址。如:-U2A 002A是反汇编开始的偏移地址-U11D0:0100 11D0:0100是反汇编开始的逻辑地址 )-U 地址1 地址2-(从地址1反汇编到地址2,如: -U105F 从当前段的偏移地址0010反汇编到005F -U01F5:105F 从01F5段的0010偏移地址开始反汇编到本段的005F为止4. -G 它是设置断点及启动程序运行命令。它有三种格式: -G -(断点是程序结束,它从当前CS:IP所指地

7、址开始直到程序结束。) -G=地址-(从指定的地址开始直到程序结束)-G=地址1 地址2 -(从指定的地址1开始运行到地址2结束)5. -D 它是显示内存单元内容命令。它有两种格式:-D地址 -(显示从当前地址开始的内存128个字节的内容,如: -D DS:00 显示从DS所表示的数据段段地址,偏移地址0000开始的128个字节的内容) -D地址1 地址2 -(显示从地址1开始到地址2所有单元的内容,如:-D DS:00 FF 显示从DS所表示的数据段段地址,偏移地址0000开始到偏移地址为00FF结束的所有单元的内容)6. -E 一次修改一个内存单元内容命令。格式为:-E地址 -(命令输入后

8、显示该地址所指示单元的内容,此时可键入要修改的内容。修改后可按回车键或空格键,按回车键为结束修改,按空格键可继续修改下一单元的内容)7. -F 将内存中若干个连续单元赋与同一数值,也就是修改。常用该命令给内存某一区域清零。如: -F DS:00 3F 00 -(将地址为DS:0000DS:003F的64个单元内容设为00H,也就是对这64个单元清零)8. -T 执行一条或多条指令的命令,也可称为单步执行命令。格式: -T -(命令后面没有参数,表示执行当前CS:IP为地址所指的一条指令) -T地址 -(执行地址所指的一条指令)-T地址|n -(执行以当前地址开始的n条指令)实验一:运行一个简单

9、的汇编语言源程序 1实验目的: 1)通过运行一个简单的汇编语言源程序,了解8086/8088汇编语言源程序的逻辑结构。 2)初步掌握汇编语言源程序上机汇编、调试、运行的过程。 2实验程序: 下面是一个16位二进制加法的源程序:STACK SEGMENT PARA STACKSTACK DW 256 DUP(?) ; 设置堆栈段 TOP LABEL WORDSTACK ENDSDATA SEGMENT DTA DW 2C3BH DTB DW 0A6DFH ; 设置数据段 DTC DW ?DATA ENDSCOSEG SEGMENTASSUME CS:COSEG,SS:STACK,DS:DATA

10、;规定COSEG是代码段,STACK堆栈段,DATA是START: MOV AX,STACK ;数据段 MOV SS,AX ;设置堆栈段的段地址 MOV AX,TOP MOV SP,AX ;设置堆栈指针 MOV AX,DATA ; MOV DS,AX ;设置数据段段地址MOV BX, DTA MOV CX, DTB ;16位二进制加法ADD BX, CX MOV DTC, BX MOV AH,4CH INT 21H ;返回DOS操作系统COSEG ENDS END START3目标文件与列表文件汇编后要生成目标文件(.OBJ文件),列表文件(.LST文件)。最重要的是目标文件,它是源程序的机器

11、码文件,它将通过LINK 文件的连接生成可以运行的执行文件,即.EXE文件。汇编后生成的列表文件(也就是.LST 文件)如下,列表文件是为程序的设计者进行观察、分析用的。1 Microsoft (R) Macro Assembler Version 5.00 2 0000 STACK SEGMENT PARA STACKSTACK 3 0000 0100 DW 256 DUP(?) 4 0200 TOP LABEL WORD 5 0200 STACK ENDS 6 0000 DATA SEGMENT 7 0000 2C3B DTA DW 2C3BH 80002 A6DF DTB DW 0A6D

12、FH 9 0004 ? DTC DW ? 10 0006 DATA ENDS 11 0000 COSEG SEGMENT ASSUME CS:COSEG,SS:STACK,DS:DATA 12 0000 B8 - R START: MOV AX,STACK 13 0003 8E D0 MOV SS,AX 14 0005 36: A1 0200 R MOV AX,TOP 15 0009 8B E0 MOV SP,AX 16 000B B8 - R MOV AX,DATA 17 000E 8E D8 MOV DS,AX 18 0010 8B 1E 0000 R MOV BX, DTA 19 001

13、4 8B 0E 0002 R MOV CX, DTB 20 0018 03 D9 ADD BX, CX 21001A 89 1E 0004 R MOV DTC, BX 22 001E B4 4C MOV AH,4CH 23 0020 CD 21 INT 21H 24 0022 COSEG ENDS 25END START 在上面的列表文件中的第2224行是列表程序的核心部分,这一部分对应着用户源程序重要执行的代码段。我们观察第20行:20 0018 03 D9 ADD BX, CX “0018(16进制)”是“ADD BX, CX”这条指令在代码段中的偏移地址,它的段地址要通过连接后生成的.E

14、XE文件在运行时由操作系统来决定。“03D9”是这条指令的机器码,“03”是操作码,表示进行加法运算。“D9”是操作码字节,它表示源操作数是“CX寄存器”,目的操作数是“BX寄存器”。再观察第12行:12 0000 B8 - R START: MOV AX,STACK 偏移地址是“0000”,表示“MOV AX,STACK”是代码段的第一条指令,“B8”是操作码,表示要将堆栈段“STACK”的段地址给“AX寄存器”。“- R”表示浮动的地址,因为堆栈段的段地址要通过连接运行时由操作系统来决定。4上机操作1). 编辑: 用“写字板”编辑好上例源文件存在C:目录下. TEST1.ASM2). 汇编

15、: 在Masm for Windows集成实验环境中打开TEST1.ASM 文件, 然后在点击运行项, 在其下拉菜单中点击编译成目标文件(OBJ), 如果你输入的文件完全正确,将在下面的栏中显示:编译源程序C: TEST1.ASM编译成功3). 连接: 在Masm for Windows集成实验环境中点击运行项, 在其下拉菜单中点击生成可执行文件(EXE), 如果你输入的文件完全正确,将在下面的栏中显示:编译源程序C: TEST1.ASM生成EXE文件成功4). 调式: 在Masm for Windows集成实验环境中点击运行项, 在其下拉菜单中点击DEBUG调试, 在屏幕上出现如下信息: -

16、 (1) 用 U 命令观察文件,注意文件的终止地址.(2) 用 T 命令观察命令执行情况,单步执行.(3) 用 G 命令运行程序 : -G 00 终止地址(4) 用 D 命令观察内存的情况: -D DS:005)在 DEBUG状态下,用 E 命令改变两个加数的大小,再运行后, 用同样方法观察运算结果。 5. 思考题: 如何编写32位的加法(或减法)程序?实验二:DEBUG命令的使用1实验目的: DEBUG的R,U,G,D,E,F,T,Q命令的使用方法。 1) -R 显示CPU中除FLAG寄存器外的14个寄存器的内容, 如想查看某一寄存器的内容,可在-R后键入寄存器名,如: -R AX AX 2

17、B6F : 1200 上面第二行2B6F为AX中的内容,第三行冒号后的1200为你键入的要修改的内容。2). -U 它是反汇编调试命令。 -U -(它是将当前CS:IP所指的地址开始的机器码反汇编32个字节指令。) -U 地址1 地址2-(从地址1反汇编到地址2,如: -U 00 2F 从当前段的偏移地址0000反汇编到002F3). -G 它是设置断点及启动程序运行命令。 4). -D 它是显示内存单元内容命令。它有两种格式: -D地址 -(显示从地址开始的内存128B的内容,如: -D DS:00 显示从DS段地址,偏移地址0000开始的128个字节的内容) 5). -E 一次修改一个内存

18、单元内容命令。格式为:-E 地址 6). -F 将内存中若干个连续单元赋与同一数值,也就是修改。常用该命令给内存某一区域清零。如: -F DS:00 3F 00 -(将地址为DS:0000DS:003F的64个单元内容设为00H)7). -T 称为单步执行命令。格式: -T -(命令后面没有参数,表示执行当前CS:IP为地址所指的一条指令) -T地址 -(执行地址所指的一条指令)8). Q 表示退出DEBUG状态。2实验程序:将自然增减的31个数据(00H-0FH-00H)写入内存, 内存的首地址为20000H, 源程序如下:STACK SEGMENT STACK DW 64 DUP(?) ;

19、设置堆栈段STACK ENDSCODE SEGMENTASSUME CS:CODE,SS:STACK MAIN PROC FARSTART: MOV AX,2000H ;数据段段地址 MOV DS,AX MOV SI,0 ;数据段偏移地址 MOV CL,0FH ;XORAX,AX ; 0AXA1:MOV SI, AL INC AL INC SI ;递增000FH DEC CL JNZ A1 ;CL=0, 结束循环 MOV CX, 10HA2:MOV SI, AL INC SI DEC AL ;递减0F-00H LOOP A2 ;CX=0, 结束循环 INT 20H ;程序结束MAIN ENDP

20、CODE ENDS END START上机操作:1). 编辑: 用“写字板”编辑好源文件存在C:目录下. TEST2.ASM2). 汇编: 在Masm for Windows集成实验环境中打开TEST2.ASM 文件, 然后在点击运行项, 在其下拉菜单中点击编译成目标文件(OBJ), 如果你输入的文件完全正确,将在下面的栏中显示:编译源程序C: TEST2.ASM编译成功3). 连接: 在Masm for Windows集成实验环境中点击运行项, 在其下拉菜单中点击生成可执行文件(EXE), 如果你输入的文件完全正确,将在下面的栏中显示:编译源程序C: TEST2.ASM生成EXE文件成功4)

21、. 调式: 在Masm for Windows集成实验环境中点击运行项, 在其下拉菜单中点击DEBUG调试, 在屏幕上出现如下信息: - (1) 用 U 命令观察文件,注意文件的终止地址.(2) 用 T 命令观察命令执行情况,单步执行.(3) 用 G 命令运行程序 : -G 00 1F(4) 用 D 命令观察内存的情况: -D DS:003. 思考题:在实验程序TEST2.ASM基础上,写出将内存单元(0000H000FH)的内容送到(0030H003FH)的程序, 并存在C:目录下. TEST21.ASM。实验报告中写出汇编及连接通过的源程序, 写出用DEBUG观察到内存(0000H003F

22、H)的内容。实验三:变量的属性1. 实验目的:1)通过本实验初步了解汇编语言源程序的结构。认识和理解变量的五个属性-SEG,OFFSET,TYPE,LENGTH,SIZE。主要是前面三个属性。2) 学会在DEBUG下调试程序,了解变量在内存中存放的情况。2. 上机程序:下面是列表程序(去掉了一些不重要的部分),下面列表程序的右边部分是要从键盘输入的源程序。 1 NAME PROPERTY OF VAIRIABLE 2 0000 STACK SEGMENT PARA STACKSTACK ;堆栈段的起始伪指令 3 0000 00C8 STAPN DB 256 DUP(?) ;设置堆栈区的长度 T

23、OP=LENGTH STAPN ;使堆栈指针指向栈底 8 00C8 STACK ENDS ;堆栈段中止的伪指令 9 0000 DATA SEGMENT ;数据段的起始伪指令 10 0000 20 DATA1 DB 20H;本数据段有11个变量 11 0001 A204 FF00 DATA2 DW 0A204H,-100H 12 0005 FD 05 DATA3 DB (-1*3),(15/3) 13 0007 45230100 DATA4 DD 12345H 14 000B 30 31 32 33 DATA5 DB 0123 15 000F 4142 0043 0044 DATA6 DW AB

24、,C,D 16 0015 ? DATA7 DB ? 17 0016 ? DATA8 DD ? 18 001A 000D DATA9 DB 10 DUP(?) 22 0027 0003 DATA10 DB 2 DUP(0CH,0DH,2 DUP(00,0EEH) 31 0039 0002 DATA11 DW 2 DUP(?) 35 003D DATA ENDS ;数据段中止的伪指令 36 0000 COSEG SEGMENT ;码段(程序段)开始伪指令 37 ASSUME CS:COSEG,SS:STACK,DS:DATA,ES:DATA 38 0000 B8 - R START: MOV AX

25、,STACK ;将堆栈段的段地址给SS 39 0003 8E D0 MOV SS,AX 40 0005 B8 00C8 MOV AX,TOP ;将堆栈指针给SP 41 0008 8B E0 MOV SP,AX 42 000A B8 - R MOV AX,DATA ;将数据段的段地址给DS 43 000D 8E D8 MOV DS,AX 44 000F 8E C0 MOV ES,AX ;将数据段的段地址给ES 45 0011 BB - R MOV BX,SEG DATA4 ;将DATA4的段地址给BX 46 0014 89 1E 001A R MOV WORD PTR DATA9,BX ;BX中

26、的内容给DATA9 47 0018 BB 0007 R MOV BX,OFFSET DATA4 ;DATA4的偏移地址给BX 48 001B 89 1E 001E R MOV WORD PTR DATA9+2,BX ;BX中的内容给DATA92 49 001F B2 04 MOV DL,TYPE DATA4 ;DATA4的类型给DL 50 0021 88 16 0022 R MOV DATA9+4,DL ;DL中的内容给DATA94 51 0025 B2 01 MOV DL,LENGTH DATA4 ;DATA4的长度给DL 52 0027 88 16 0023 R MOV DATA9+5,D

27、L ;DL中的内容给DATA95 53 002B B2 04 MOV DL,SIZE DATA4 ;DATA4的尺寸给DL 54 002D 88 16 0024 R MOV DATA9+6,DL ;DL中的内容给DATA96 55 0031 B1 03 MOV CL,LENGTH DATA10 ;DATA10的长度给CL 56 0033 88 0E 0025 R MOV DATA9+7,CL ;CL中的内容给DATA97 57 0037 B1 03 MOV CL,SIZE DATA10 ;DATA10的尺寸给CL 58 0039 88 0E 0026 R MOV DATA9+8,CL ;CL中

28、的内容给DATA98 59 003D A1 0001 R MOV AX,DATA2 ;变量DATA2的内容给AX 60 0040 03 06 0003 R ADD AX,DATA2+2 ;(AX)变量DATA22给AX 61 0044 A3 0039 R MOV DATA11,AX ;AX中的内容给变量DATA11 62 0047 8B 16 0001 R MOV DX,DATA2 ;变量DATA2的内容给DX 63 004B 2B 16 0003 R SUB DX,DATA2+2 ;(DX)变量DATA22给DX 64 004F 89 16 003B R MOV DATA11+2,DX ;DX中的内容给变量DATA112 65 0053 B4 4C MOV AH,04CH ;准备返回DOS 66 0055 CD 21 INT 21H ;返回DOS 67 0057 COSEG ENDS ;码段到此结束的伪指令 68 END START ;程序到此结束的伪指令3.实验成功后认真填写下表:变量名称偏移地址内容变量名称偏移地址内容变量名称偏移地址内容

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1