您好,欢迎来到筏尚旅游网。
搜索
您的当前位置:首页寻址方式与基本指令实验

寻址方式与基本指令实验

来源:筏尚旅游网


微机原理第一次试验

寻址方式与基本指令实验

班级:xx

姓名:xx

学号:06094082(18)

日期:2011-10-18

一、试验目的

(1)熟悉80x86寻址方式及基本指令的功能,进一步理解和巩固课堂学习内容。

(2)掌握汇编语言程序设计上机过程和汇编语言源程序结构,为后续汇编语言程序设计打好基础。

(3)熟悉Microsoft的DEBUG或Borland的Turbo Debugger调试工具的使用方法。

二、实验内容

(1)读懂下列源程序,使用EDIT生成名为EX11.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和09122H。

③程序中的一条“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 ;若两操作数为无符号数,计算结果是否正确?若两操作数为带符号数,计算结果是否正确?若计算结果正确,结果是正数还是负数?

答:若两操作数为无符号数,计算结果正确;若两操作数为带符号数,计算结果正确;结果应为负数。

④执行完第二条“ADD 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 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)= 4802 H0,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中定义的变量的个数

CF=0 ,OF= ,

;汇编后其值为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 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

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

三、实验简要步骤

1.使用记事本notepad.exe编写源代码,或者用EDIT.EXE,生成asm后缀的源程序;

2.运行CMD,进入汇编环境所在目录;

3.使用MASM.exe编译源代码文件,此时目录下生成obj后缀的目标文件。

4.使用LINK.exe连接目标文件,此时目录下生成exe后缀的可执行文件。

5.使用DEBUG.exe来调试,查看程序运行过程:

-T:单步执行 -U: 反汇编

-D: 显示内存 -Q:结束调试

四、实验小结

这是我学习汇编以来的第一次上机操作,说实话,开始的时候我都不不知道该从哪里入手,甚至连那个编辑软件都不知道如何使用,开始感到很慌张,但我很快就冷静下来了,我通过上网查找资料,并且认真研究,我骤步学会了80x86寻址方式及基本指令的

功能,进一步理解和巩固课堂学习内容。掌握了汇编语言程序设计上机过程和汇编语言源程序结构,为后续汇编语言程序设计打好基础。初步掌握了Microsoft的DEBUG或Borland的Turbo Debugger调试工具的使用方法。实践的过程中我对于实验用到的基本指令和寻址方式加深了理解。实验中遇到过一些值得注意的问题:输入源代码时,多了标点会导致编译错误;电脑默认的记事本的扩展名是TXT,所以编写的源程序必须先修改扩展名,把.txt改为.asm;调试时必须输入文件名如debug a.exe,否则调试的不是正确的程序。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务