实验三 数据传送类指令练习

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验三:数据传送类指令练习

实验目的:进一步熟悉常用DEBUG命令、数据寻址方式;掌握80x86数据传送类指令的使用方法、汇编语言源程序完整段定义格式。

实验内容:练习数据传送类指令:MOV、PUSH、POP、XCHG、LEA、LDS、LES、XLAT、PUSHF、POPF、LAHF、SAHF,注意观察指令执行结果、弄清指令的功能。

实验步骤:

1、练习MOV传送指令,掌握MOV传送指令的格式:

在代码段中添加以下指令,对源程序汇编检查指令的正误,如果有错误请写出错误原因。

MOV CX, DL (操作数类型不匹配)

MOV CS, DX (CS不能作为目的操做数)

MOV 35H, DX (立即数不能为目的操作数)

MOV CX, [DX] (间接寻址的寄存器只能是BX,SI,DI,BP)

MOV [SP], DX (间接寻址的寄存器只能是BX,SI,DI,BP)

MOV AL, 1234H (操作数类型不匹配)

MOV ES, [DX][SI] (必须是一个基址一个变址)

MOV AX, BX+DI (【BX+DI】)

MOV [SI], [DI] (不能同时为内存操作数)

;[

MOV CX, D X;(操作数类型不匹配)

MOV C X, DX ;(CS不能作为目的操做数)

MOV BYTE PTR[BX],35H ;(立即数不能为目的操作数)

MOV CX, [DI] ;(间接寻址的寄存器只能是BX,SI,DI,BP)

MOV [BP], DX ;(间接寻址的寄存器只能是BX,SI,DI,BP)

MOV A X, 1234H ;(操作数类型不匹配)

MOV ES, [BX][SI] ; (必须是一个基址一个变址)

MOV AX, [BX+DI] ;(【BX+DI】)

MOV [SI], DI ; (不能同时为内存操作数)

]

2、练习PUSH、POP指令的使用方法,参考过程如下:

①在代码段中添加以下指令,汇编连接源程序,用DEBUG调试程序:用U命

令对其反汇编,用T命令逐条执行指令,并记录结果。

MOV AX, 2000H ; (AX)= 2000 , (SP)=__0000___

MOV BX, 3000H ; (BX)= 3000 , (SP)=___0000__

PUSH AX ; (SP)=_____FFFE___, 栈顶单元字内容=_______。

PUSH BX ; (SP)=____FFFC____, 栈顶单元字内容=_______。

POP AX ; (SP)= FFFE , (AX)= 3000 POP BX ; (SP)= 0000 , (BX)= 2000

②分析入栈PUSH指令(-2)、出栈POP指令(+2)执行时SP的变化。

3、练习LEA、LDS、LES指令的使用方法,参考过程如下:

①在数据段中添加以下伪指令,在代码段中添加以下指令,汇编连接源程序,

用DEBUG调试程序:用U命令对其反汇编,用T命令逐条执行指令,并记录结果。

TABLE DB 10H, 20H, 30H, 40H, 50H

ADDR DW 2 DUP(?)

MOV ADDR, OFFSET TABLE

MOV ADDR+2, SEG TABLE

LEA AX, TABLE ;内存操作数的偏移地址为____, AX=_____

LDS AX, ADDR ;内存操作数的物理地址为___,内容为____, AX=___,DS=___ LES AX, ADDR ;内存操作数的物理地址为___,内容为____, AX=___,ES=___

②写出和LEA AX, TABLE等价的传送指令,验证并记录结果。

③总结LDS、LES指令的功能。

4、练习XLAT指令的使用方法,参考过程如下:

①在数据段中添加以下伪指令,在代码段中添加以下指令,汇编连接源程序,

用DEBUG调试程序:用U命令对其反汇编,用T命令逐条执行指令。运行完XLAT指令后,查看并记录BX、AL的值,总结该程序段实现的功能。

TABLE DB ‘012345689’

MOV BX, OFFSET TABLE

MOV AL, 5

XLAT

②利用XLAT指令在AL中得到0-9某个数字的平方值,应该如何修改程序?

运行程序段,验证并记录结果。

5、练习PUSHF、POPF、LAHF、SAHF指令的使用方法,参考过程如下:

①在代码段中添加以下指令,汇编连接源程序,用DEBUG调试程序:用U命

令对其反汇编,用T命令逐条执行指令, 查看并记录堆栈中栈顶字单元中的值以及AX内容的变化。

MOV SP, 100H

PUSHF

POP AX

OR AX, 40H

PUSH AX

POPF

MOV AH, 10H

SAHF

②执行PUSHF指令前,记录标志位的值,执行完指令POPF后,再记录标志位

的值,并和原来的值比较,说明程序功能。执行完SAHF后,记录标志位的值。

相关文档
最新文档