微机原理与接口技术实验报告材料 西安邮电

微机原理与接口技术实验报告材料 西安邮电
微机原理与接口技术实验报告材料 西安邮电

西安邮电大学

(计算机学院)

微机原理与接口技术实验报告实验名称:寻址方式与基本指令实验

专业名称:

班级:

学生:

学号:

指导教师:

实验日期: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

STL DW 100H DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE, SS:STACK

START: MOV AX, STACK

MOV SS, AX

MOV SP, LENGTH STL

;表达式“LENGTH STL ”的功能为计算STL中定义的变量的个数

;汇编后其值为100H

MOV AX, 01010B

MOV BX, 00011B

PUSH AX

PUSH BX

ADD AX, BX

POP AX

POP BX

AND AX, BX

MOV AH, 4CH

INT 21H

CODE ENDS

END START

(3)指出下列指令的错误原因,上机运行,观察汇编程序(MASM.EXE)给出的出错信息,改正后上机验证。

①MOV BP, BL ②MOV [BX], [BP]

③MOV [BX], 20H ④INC [SI]

⑤ADD AX,[SI+DI] ⑥SHL AX, 3

⑦PUSH 2000H ⑧POP AL

⑨MOV 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] MOV [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

错误原因:不能对立即数进行栈操作

⑧出错信息:error A2058:Byte register illegal

错误原因:要求用字寄存器而使用了字节寄存器

⑨出错信息:error A2059:Illegal use of CS register

错误原因:CS不能作为目的操作数

⑩出错信息:error A2056:Immediate mode illegal

错误原因:立即数不能送入数据段

4、实验总结

这是第一次上机实验,并不知道具体怎样做,通过老师讲的知识和操作,理解和巩固了课堂学习容,基本掌握了汇编语言程序设计上机过程和汇编语言源程序结构,为以后汇编语言程序设计打好基础。初步掌握了调试工具的使用方法。

西安邮电大学

(计算机学院)

微机原理与接口技术实验报告实验名称:字符及字符串输入输出与顺序程序设计

专业名称:

班级:

学生:

学号:

指导教师:

实验日期:2017年11月14日

相关主题
相关文档
最新文档