微机原理与接口技术实验报告 西安邮电
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安邮电大学
(计算机学院)
微机原理与接口技术实验报告实验名称:寻址方式与基本指令实验
专业名称:
班级:
学生姓名:
学号:
指导教师:
实验日期:2017年10月31日
寻址方式与基本指令实验
1、实验目的
1.1、熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。
1.2、掌握汇编语言程序设计上机过程, 掌握汇编语言源程序结构,为后续汇编语言程序设计打好基础。
1.3、熟悉Microsoft的DEBUG或Borland的Turbo DEBUG调试工具的使用方法
2 、实验预习要求
2.1、认真阅读本书第一部分第1章,熟悉汇编语言程序设计上机步骤。
2.2、认真阅读本书第三部分,熟悉DEBUG调试工具的使用方法。
2.3、复习80x86操作数寻址方式及基本指令(数据传送、算术运算和逻辑运算等)。
2.4、了解实验内容,并在实验前根据课堂所学知识回答有关问题(个别取决于程序实际运行环境的问题除外),以便在实验时进行验证。
3、实验内容
3.1、读懂下列源程序,使用EDIT生成名为EX11.ASM的源程序,汇编生成EX11.OBJ文件和EX11.LST文件,连接生成EX11.EXE文件;用EDIT打开EX11.LST 文件,了解.LST文件包含的信息;使用DEBUG调试工具单步执行EX11.EXE程序,注意观察IP值的变化,并回答下列问题。
(1)程序装入后,代码段寄存器CS的内容为____0913__H,代码段第一条可执行指令MOV AX, DATA对应的机器代码为__B81209__H,它是一个
__3__字节指令,注意观察执行该指令时IP值的变化情况,该指令源操
作数DATA的寻址方式是__立即数寻址__,其值为__0912H__。
(2)执行完MOV DS, DATA指令后,数据段寄存器DS的内容为_0912__H,源程序在数据段中定义的数据82H、68H和88H被装入的存储单元的物理
地址分别为_09120_H、_09121__H和__09122__H。
(3)程序中第一条ADD AL, [BX] 指令对应的机器代码为___0207__H,它是一个___2__字节指令,注意观察执行该指令时IP值的变化情况;该
指令中源操作数的寻址方式为___寄存器间接寻址___,该操作数所在存
储单元的逻辑地址(DS): (BX)为_ 0912:0001___,其物理地址为
__09121___H;执行完该指令后(AL)=___EA___H,CF=___0__,OF_=__0_,ZF=__0__,SF=1,AF=0,PF=0;若两操作数为无符号数,计算结果是否
正确__是__?若两操作数为带符号数,计算结果是否正确__是__?若计
算结果正确,结果是正数还是负数___负___?
(4)执行完第二条ADD AL, [BX] 指令后(AL)=__72__H,CF=__1__,OF=__1_,ZF=_0___,SF=_0__,AF=_1__,PF=_1__;若两操作数为无符
号数,计算结果是否正确__否___?若两操作数为带符号数,计算结果是
否正确___否_____?
3.2、指令MOV SUM, AL中目的操作数的寻址方式为___寄存器寻址____。该指令执行完后,注意观察(DS):0003H单元中值的变化,该单元的值变为_72__H。
DATA SEGMENT
NUM DB 82H, 68H, 88H
SUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START: 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 21H
CODE 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”的功能为堆栈初始化,试问执行完这三条指令后,堆栈栈底所在单元的逻辑地址(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。请读者通过对堆栈操作指令执行情况的观察,进一步掌握进、出栈操作过程。
②执行“ADD AX, BX”指令后,(AX)=A7AD H,CF=0 ,OF= 1,ZF=0 ,SF=1,AF=0 ,PF=0,(注意考虑PF值与计算结果高8位有无关系);若两操作数为无符号数,计算结果是否正确正确?若两操作数为带符号数,计算结果是否正确不正确?
③执行“AND AX, BX”指令后,(AX)=4802H,CF=0 ,OF= 0,ZF=0 ,SF=0,AF=0 ,PF=0.
STACK SEGMENT stack