汇编课程设计报告.pdf

上传人:飞****9 文档编号:137598699 上传时间:2020-07-10 格式:PDF 页数:16 大小:444.57KB
返回 下载 相关 举报
汇编课程设计报告.pdf_第1页
第1页 / 共16页
汇编课程设计报告.pdf_第2页
第2页 / 共16页
汇编课程设计报告.pdf_第3页
第3页 / 共16页
汇编课程设计报告.pdf_第4页
第4页 / 共16页
汇编课程设计报告.pdf_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《汇编课程设计报告.pdf》由会员分享,可在线阅读,更多相关《汇编课程设计报告.pdf(16页珍藏版)》请在金锄头文库上搜索。

1、四川大学计算机学院四川大学计算机学院 学生实验报告学生实验报告 实验名称实验名称:汇编课程设计报告 指导教师指导教师: 唐宁九 姓名姓名:廖偲 学号学号:0943111209 班级班级:软件 09 级一班 日期日期: 20101114 实验报告实验报告 班级_姓名_学号_ 一、实验一: DEBUG 基本命令与数据传输指令 二、实验的目的和要求: 1. 熟练掌握 DEBUG 的基本调试命令,能够使用 DEBUG 编写、调试汇编语言程序片 段。 2. 在理解数据传输指令的基础上按照实验内容中指定的程序片段对程序进行调试 和记录; 三、实验的环境: 1.硬件环境:cpu2.26gHZ、内存 2G、显

2、存 1G、64 位总线笔记本电脑 2.软件环境:win7 32 位操作系统、8086/8088 指令集系统(在 windows 系统中) 、masm 的 汇编工具。 四、源程序清单: MOV AL, 01H MOV SI, 0002H LEA SI, SI MOV BYTE PTR SI, 80H LAHF XCHG AL, AH SAHF XCHG AH, SI SAHF 五、操作内容: 1.从 cmd 在 debug 下进入用 A 命令进行汇编 格式: A 地址 功能:从键盘输入汇编程序, 并逐条地把汇编指令翻译成机器代码指令存入对应内存单元。 如 果不指定汇编地址, 则以 CS:IP 为

3、地址 2. 反汇编命令 U 使用 格式: U 地址/地址范围 功能: 将指定地址范围内的机器代码翻译成汇编源程序指令显示出来, 并同时显示地址及代 码。 注意: 反汇编时一定确认指令的起始地址, 否则得不到正确的结果。 3.寄存器查看/编辑命令 r 或 r 寄存器名称 功能: 显示当前所有寄存器内容, 状态标志及将要执行的下一条指令的地址、代码和汇编指 令形式。 4. 跟踪运行命令 T 格式: T =起始地址 指令条数 功能: 逐条跟踪程序的运行, 同时显示出各寄存器的内容、 状态标志和下一条要执行的指令, 当执行够指定的指令数后就暂停程序的运行。 说明: 如果不指定起始地址, 则从 CS:I

4、P 处开始执行。 不指定指令条数时, 认为只执行一条指令。 六、运行结果: 1.debug 中 a 命令使用 2.u 命令 3.r 命令 4.t 命令 七、实验运行情况分析。 1.使用 t 单步调试时每条指令(DS=1422H) MOV AL, 01H ;AX 寄存器低 8 位至为 01H,标志寄存器无变化 MOV SI, 0002H ;SI 寄存器置为 0002H,标志寄存器无变化 LEA SI, SI ;LEA 将 16 位源操作数有效地址给目的地址,SI 不变还是 0002H ;标寄存器无变化 MOV BYTE PTR SI, 80H ;将一个字节 80H 存入内存 DS:SI中(142

5、2H:0002H =80H) LAHF ;将 Flag 寄存器低 8 位存入 AH 中,AX=0201H XCHG AL, AH ;将 AL 和 AH 中的数据互换 AX=0102H SAHF ; 将 AH 存入 Flag 寄存器低 8 位中为 01H,CF 标志位变为 1 XCHG AH, SI ; AH 和内存中 DS:SI中数据互换 AH=80H,1442H:0002H=01H SAHF ; 将 AH 存入 Flag 寄存器低 8 位中为 80H,CF=0,TF=1 这个程序片段展示了 LEA、LAHF、SAHF、XCHG 这几个命令使用,标志寄存器的一些标志位 实验报告实验报告 一、实

6、验二: DEBUG 基本命令与算术运算指令 二、实验的目的和要求: 熟练掌握 DEBUG 的基本调试命令,能够使用 DEBUG 编写、调试汇编语言程序 片段。 在理解算术运算指令的基础上按照实验内容中指定的程序片段对程序进行调试 和记录; 三、实验的环境: 1.硬件环境:cpu2.26gHZ、内存 2G、显存 1G、64 位总线笔记本电脑 2.软件环境:win7 32 位操作系统、8086/8088 指令集系统(在 windows 系统中) 、masm 的 汇编工具。 四、源程序清单: MOV WORD PTR 0100H, 5564H MOV WORD PTR 0102H, 0C279H M

7、OV AX, 0100H PUSH AX ADD AL, 0102H;说明标志位是如何确定的 ADC AH, 0103H;说明指令执行原理,包括标志位 MOV 0104H, AX POP AX SUB AL, 0102H ;说明标志位是如何确定的 SBB AH, 0103H;说明指令执行原理,包括标志位 MOV 0106H, AX 五、操作内容: 1. 断点调试命令 G 格式:g 或 g 起始地址断点地址 功能:从当前 CS、IP 指示的位置开始连续执行程序,执行到指定断点处(不包括断点地址指 示的指令)暂停执行,在屏幕上显示 CPU 现场。 2. 内存单元查看命令 D 格式:D (默认)或

8、D 地址 功能:查看指定地址开始的内存区域中各内存单元的内容。 3.内存单元修改命令 E 格式:E 地址 功能:修改指定地址内存单元的内容。 六、运行结果: 1.g 命令的使用 2.D 命令的使用 3.E 命令的使用 七、实验运行情况分析。 MOV WORD PTR 0100H, 5564H ;一个字的内容 5564H 放到内存中 DS:0100H MOV WORD PTR 0102H, 0C279H ;同理 0c279H 放到内存0102H中 MOV AX, 0100H ;5564H 传入 AX PUSH AX ;AX 数据送入堆栈段 sp 指向位置 sp 自减 保存 AX ADD AL,

9、0102H ;64H+79H=DDH 源操作数与目的操作数相加结果存入目的操作数 ;SF=1 与最高位保持一致(不为补码时无意义) ;PF=1 二进制中有偶数个一 ;OF=1 判断:最高位和次高位进位异或值 ;CF=0 最高位无进位、借位 ;其他位无变化 ;操作数解释为补码时溢出,无符号数不溢出 ADC AH, 0103H;DEST+SRC+CF=DEST, 55H+C2H+0=1 17H ;CF=1 最高位有进位 ;OF=0 判断:最高位和次高位进位异或值 ;PF=1 有偶数个 1 ;程序员把操作数解释为无符号数溢出,补码不溢出 MOV 0104H, AX ;结果存入内存 POP AX ;出

10、栈 恢复 AX SUB AL, 0102H ;DEST-SRC=DEST, 64H-79H=0EBH ;SF=1 最高位为一 ;CF=1 最高位有借位 ;AF=1 第四位有借位 ;PF=1 1 为偶数个 ;无符号数出现溢出,有符号数无溢出 SBB AH, 0103H;DEST-SRC-CF=DEST, 55H-C2H-1=92H ;CF=1 最高位有借位 ;SF=1 最高位为一 ;OF=1 最高位和次高位进位异或值为 1 ;不论为有符号或无符号数都溢出 MOV 0106H, AX ;结果存入内存 这个小程序演示了 ADD、ADC 和 SUB、SBB 连用展示超过 8 位时两次加减来表示 16

11、位加减 以及其中对标志位的影响。 实验报告实验报告 一、实验三: 编制完整的汇编语言源程序 二、实验的目的和要求: 掌握编写完整汇编语言源程序的方法,掌握汇编、连接等将源程序转换为可执行代码的必 要步骤。 在理解逻辑运算指令原理的基础上,按照实验要求的功能编写完整程序,生成可执行文件 后,使用 DEBUG 对程序进行调试。 三、实验的环境: 1.硬件环境:cpu2.26gHZ、内存 2G、显存 1G、64 位总线笔记本电脑 2.软件环境:win7 32 位操作系统、8086/8088 指令集系统(在 windows 系统中) 、masm 的 汇编工具、emu8086(8086 模拟器) 。 四

12、、源程序清单: DATA segment VAR1 db 35h VAR2 dd 0E2597455H RES1 db 0 RES2 db 0 DATA ends code segment ASSUME DS:data,cs:code start: mov ax,data mov ds,ax MOV CL,4 MOV AH,VAR1 MOV AL,VAR1 AND AL,0FH MOV RES2,AL AND AH,0F0H SHR AH,CL MOV RES1,AH MOV CX,2 LOOP1: SHL VAR2,1 RCL VAR2+2,1 LOOP LOOP1 MOV AH,4CH I

13、NT 21H code ends end start 五、操作内容: 编写一个完整源程序完成如下功能: 1)设定字节型变量 VAR1 的内容为 35H,编写程序将 VAR1 的高 4 位与低 4 位分离,分别作 为低 4 位保存在 RES1 和 RES2 中,这两个变量高 4 位置 0。 2)设定 32 位(二进制)数据 0E2597455H(注:最高位为 E)保存在变量 VAR2 中,将该变 量中的内容算术左移 2 位,所得结果仍然保存在 VAR2 中。 六、运行结果: 运行前 运行后 七、实验运行情况分析。 1)在 VAR1 处理过程中 使用 AND、SHR 指令:AND 指令分别用 0F

14、H、0F0H 提取 VAR1 低和高四位放入 AL、AH,在 用 SHR 让 AH 右移四位最高位依次补 0。分别存入 RES1、RES2 中。 AND AL,0FH ;AL=05H PF=1 AND AH,0F0H;AH=30H PF=1 SHR AH,CL;标志位无变化 AH03H 2)在 VAR2 处理过程中 使用 SHL、RCL 对 32 位 VAR2 实现左移。 (分析第一次循环) LOOP1: SHL VAR2,1 ;左移一位 最低位补 0 VAR2 = CC ;SF=1 OF=1 CF=0 PF=1 RCL VAR2+2,1 ;加上 CF 左移最高位移入 CF,CF 移入最低位

15、;CF=1 SF=1 PF=1 OF=0 LOOP LOOP1 3)如果 VAR2 解释为有符号数乘以 4 为负数结果为负数未出现溢出(SF=1) 解释为无符号数乘以 4 结果溢出 实验报告实验报告 一、实验四:分支与循环结构程序设计 二、实验的目的和要求: 掌握分支、循环结构程序设计方法,重点掌握结合程序流程图设计分支、循环结构入、出 口的方法。 掌握使用 DEBUG 调试分支、循环结构的方法。 三、实验的环境: 1.硬件环境:cpu2.26gHZ、内存 2G、显存 1G、64 位总线笔记本电脑 2.软件环境:win7 32 位操作系统、8086/8088 指令集系统(在 windows 系统中) 、masm 的 汇编工具,emu8086。 四、源程序清单: 编写的统计数组中奇数和偶数的个数, 统计结果分别保存在ODDNUM和EVENNUM单元中。 DATA segment VAR DB 14,-25,66,-17,78,-33,46 DB -9

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号