微机原理 寻址方式与基本指令实验_第1页
微机原理 寻址方式与基本指令实验_第2页
微机原理 寻址方式与基本指令实验_第3页
微机原理 寻址方式与基本指令实验_第4页
微机原理 寻址方式与基本指令实验_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

1、 西 安 邮 电 大 学 (计算机学院)课内实验报告实验名称: 寻址方式与基本指令实验 专业名称: 通信工程班 级: 通工1203 学生姓名: 杜媛媛学号(8位): 03121064指导教师: 宁 晓 菊实验日期: 2014年10月29日一. 实验目的及实验环境1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容2、掌握汇编语言程序设计上机过程,掌握汇编语言程序结构,为后续汇编语言程序设计打好基础。3、熟悉Microsoft的DEBUG或Borland的Turbo DEBUG调试工具的使用方法。二. 实验内容二、实验内容 (1)读懂下列源程序,使用EDIT生成名为EX11.

2、ASM的源程序,汇编生成EX11.OBJ 文件和EX11.LST文件,连接生成EX11.EXE程序,注意观察IP值的变化,并回答下列问题。 程序装入后,代码段寄存器CS的内容为0913H,代码段第一条可执行指令“MOV AX, DATA”对应的机器代码为 B81209H,它是一个 3字节指令,注意观察执行该指令时IP值的变化情况,该指令源操作数DATA的寻址方式是 立即数寻址方式,其值为0912H。 执行完“MOV DS, AX”指令后,数据段寄存器DS的内容为 0912 H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理地址分别为09120H、09121H和09122

3、H。 程序中的一条“ADD AL, BX”指令对应的机器代码 为0207 H,它是一个 2 字节指令,注意观察执行该指令时IP值的变化情况;该指令中源操作数的寻址方式为寄存器间接寻址方式,该操作数所在存储单元的逻辑地址(DS):(BX)为0912:0001,其物理地址为09121H;执行完该指令后(AL)=EAH,CF=0,OF=0,ZF=0,SF=1,AF=0,PF=0 ;若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?若计算结果正确,结果是正数还是负数?答:若两操作数为无符号数,计算结果正确;若两操作数为带符号数,计算结果正确;结果应为负数。执行完第二条“A

4、DD AL, BX”指令后(AL)= 72 H,CF=1,OF= 1,ZF=0,SF=0,AF= 1,PF=1; 若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?答:若两操作数为无符号数,计算结果不正确;若两操作数为带符号数,计算结果不正确。指令“MOV SUM, AL”中,目的操作数的寻址方式为直接寻址方式 。该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为 72 H。DATA SEGMENT NUM DB 82H, 68H, 88H SUM DB ?DATA ENDSCODE SEGMENT ASSUME CS: CODE, DS:

5、 DATASTART: MOV AX, DATA MOV DS, AX MOV BX, OFFSET NUM MOV AL, BX INC BX ADD AL, BX INC BX ADD AL, BX MOV SUM, AL MOV AH, 4CH INT 21HCODE ENDS END START (2)读懂下列源程序,编辑、汇编、连接生成EX12.ASM、EX12.OBJ、EX12.LST、EX12.EXE文件使用DEBUG单步调试EX12.EXE文件,并回答一下问题。代码的前三段指令“MOV AX, STACK”、“ MOV SS, AX”和“ MOV SP, LENGTH STL”

6、的功能为堆栈初始化,试问执行完这三条指令后,堆栈栈底所在单元的逻辑地址(SS): (SP)为0912:0100 ;执行“PUSH AX”指令后,堆栈指针寄存器(SP)=00FEH,此时(SS): (SP+1)和(SS): (SP)单元的值为 0AH和5B H;执行完“PUSH BX”后,(SP)= 00FC H;此时(SS): (SP+1)和(SS): (SP)单元的值为 4CH和A3 H;执行完“POP AX”后,(SP)= 00FEH;执行完“POP BX”后,(SP)= 0100 H,此时(AX)=4CA3 H,(BX)= 5B0A H。请读者通过对堆栈操作指令执行情况的观察,进一步掌握

7、进、出栈操作过程。执行“ADD AX, BX”指令后,(AX)=A7AD H,CF=0 ,OF= 1,ZF=0 ,SF=1,AF=0 ,PF=0,(注意考虑PF值与计算结果高8位有无关系);若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?答:若两操作数为无符号数,计算结果正确;若两操作数为带符号数,计算结果不正确。执行“AND AX, BX”指令后,(AX)= 4802 H,CF=0 ,OF= 0,ZF=0 ,SF=0,AF=0 ,PF=0. STACK SEGMENT stack STL DW 100H DUP(?)STACK ENDSCODE SEGMENT

8、 ASSUME CS:CODE, SS:STACKSTART: MOV AX, STACK MOV SS, AX MOV SP, LENGTH STL ;表达式“LENGTH STL ”的功能为计算STL中定义的变量的个数;汇编后其值为100H MOV AX, 0101101100001010B MOV BX, 0100110010100011B PUSH AX PUSH BX ADD AX, BX POP AX POP BX AND AX, BX MOV AH, 4CH INT 21HCODE ENDS END START(3)指出下列指令的错误原因,上机运行,观察汇编程序(MASM.EXE

9、)给出的出错信息,改正后上机验证。MOV BP, BL MOV BX, BP MOV BX, 20H INC SIADD AX,SI+DI SHL AX, 3PUSH 2000H POP ALMOV CS, AX MOV DS,1000H答:出错信息:warning A4031:Operand types must match错误原因:操作数类型不匹配, BP 是一个16位寄存器,而BL是一个8位寄存器。 改正后:MOV BP, BX ; 出错信息:error A2052:Improper operand type错误原因:源操作数和目的操作数不能同时为存储器。改正后:MOV AX, BP M

10、OV BX, AX ; 出错信息:error: A2035:Operand must have size错误原因:源操作数长度不明确 出错信息:error: A2035:Operand must have size错误原因:操作数的长度未指定出错信息:error: A2047:Multiple index registers错误原因:同时使用了多个变址寄存器出错信息:error A2052:Improper operand type错误原因:循环次数大于1应该间接移位出错信息:error A2056:Immediate mode illegal错误原因:不能对立即数进行栈操作出错信息:erro

11、r A2058:Byte register illegal错误原因:要求用字寄存器而使用了字节寄存器出错信息:error A2059:Illegal use of CS register错误原因:CS不能作为目的操作数出错信息:error A2056:Immediate mode illegal错误原因:立即数不能送入数据段三方案设计无四测试数据及运行结果1、程序EX11.EXE加载到内存后的反汇编结果第一列为指令在内存中的段地址,第二列为指令在内存中的偏移地址,第三列为指令所对应的机器码2、指令执行前各个寄存器中的值其中FLAG寄存器的符号值对应表为:溢出标志OF(Over flow fla

12、g) OV(1) NV(0)方向标志DF(Direction flag) DN(1) UP(0)中断标志IF(Interrupt flag) EI(1) DI(0)符号标志SF(Sign flag) NG(1) PL(0零标志ZF(Zero flag) ZR(1) NZ(0)辅助标志AF(Auxiliary carry flag) AC(1) NA(0)奇偶标志PF(Parity flag) PE(1) PO(0)进位标志CF(Carry flag) CY(1) NC(0)3、 程序单步执行后各个寄存器的值4、 数据在内存中的存放最后面的数据为该字节所对应的ASCII码5、 第一个ADD指令执

13、行完成,AL=0EAH对于无符号数其结果未溢出6、 第二个ADD指令执行完成,AL=72H,OF=1其结果溢出7、 程序执行完成5 总结通过实验一,熟悉掌握了汇编语言程序设计的上机步骤,了解了编译连接的过程,以及调试工具的各种命令。实践的过程中我对于实验用到的基本指令和寻址方式加深了理解,并再次认真读了课本,进一步巩固了课堂学习内容。实验中遇到过一些值得注意的问题:输入源代码时,少了空格会导致编译错误;编写的源程序必须保存为.asm而不是.asm.txt;调试时必须输入文件名如debug a.exe,否则调试的不是正确的程序。在以后的实验中应当注意积累这些经验,提高效率。六附录:源代码(电子版)assume

温馨提示

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

评论

0/150

提交评论