实验3 数据传送指令练习
一、实验目的:
1.熟悉IBM PC机的数据传送指令的使用。
2. 掌握堆栈的作用。
3.掌握堆栈指示器SP和堆栈操作指令PUSH、POP。
二、实验内容:
1.将数据段中偏移地址为0000H的连续三个字节内容传送至该段偏移地址为0003H的连续三个字节单元中。要求使用直接寻址、寄存器间接寻址方式。
直接寻址:
寄存器间接寻址方式:
先修改值
2.使用传送指令把一个数64H送到以(DS)=3000H,偏移地址EA=1064H的存储单元中,并将其读出送到AL寄存器中去。在DEBUG环境下编写程序,运行并记录结果。
说明:此题对段寄存器值的设置通过传送指令完成。
3.逐条分析下列指令的运行结果并指出执行下列的程序片段后,(SP)=?(AX)=?(BX)=?并上机验证。
MOV AX,1000H //ax=1000H
MOV SS,AX //ss=1000H
MOV SP,2000H //SP=2000H
MOV AX,30000H //AX=3000H
MOV BX,50000H //BX=5000H
PUSH AX //AX入栈
PUSH BX //BX入栈
POP AX //先BX出栈,然后AX 出栈。
要求记录每条堆栈操作指令后的运行结果并给出分析。
(SP)=1FFE(AX)=5000(BX)=5000
4.设内存数据段偏移地址4400H单元开始存放了2个字节数据55H和66H,编写程序段,使(BX)=2400H,(SI)=1000H,观察执行MOV DI,[BX+SI+1000]与LEA DI,[BX+SI+1000H]后的结果并分析。
分析:
lea是“load effective address”的缩写,简单的说,lea指令可以用来将一个内存地址直接赋给目的操作数,例如:
lea DI,[BX+SI+1000]就是将BX+SI+1000这个值直接赋给 DI,而不是把BX+SI+1000处的内存地址里的数据赋给 DI,所以最后di的值是4400
而mov指令则恰恰相反,例如:mov DI,[BX+SI+1000]则是把内存地址为BX+SI+1000处的数据赋给 DI。所以最后di的值是6655