微机原理习 题 2

发布时间 : 星期日 文章微机原理习 题 2更新完毕开始阅读

(1)以BX寄存器的间接寻址 (2)以BX寄存器的相对寻址 (3)以BX、SI寄存器的基址变址寻址 解:(1)MOV BX, OFFSET BLOCK +99*2

MOV AX, [BX] (2)MOV BX, 99*2 MOV AX, BLOCK[BX]

或:

LEA BX, BLOCK MOV AX, [BX+99*2]

(3)LEA BX, BLOCK MOV SI, 99*2

MOV AX,[BX+SI] 或:

LEA SI, BLOCK MOV BX, 99*2 MOV AX,[BX+SI]

2.9 已知:(BX)=1200H,(BP)=2400H,(SI)=0100H,(DI)=0200H,(SS)=1000H,

(DS)=2000H,(ES)=3000H,变量VAR1对应地址为2000H,试分别指出下列

指令中存储器的寻址方式及物理地址。 (1)MOV AL,[020H] (2)MOV AL,[BP+010H] (3)MOV [BX+SI-20H],AX (4)MOV BL,ES:[BX+10H] (5)MOV VAR1[BX+DI],AL

解:(1)直接寻址 PA=(DS)*16+EA=20000h+020H=20020H

(2)寄存器相对寻址PA=(SS)*16+EA=10000H+2400H+010H=12410H

(3)相对基址加变址寻址PA=(DS)*16+EA=20000H+1200H+0100H-20H=212E0H (4)寄存器相对寻址PA=(ES)*16+EA=30000H+1200H+10H=31210H

(5)相对基址加变址寻址PA=(DS)*16+EA=20000H+2000H+1200H+0200H=23400H

2.10 设Block为字单元1000H:001FH的符号地址(变量),该单元的内容是01A1H,试

问以下两条含有Block的指令有什么不同?指令执行后BX的内容是多少? (1)MOV

BX,Block

5

(2)LEA

BX,Block

解:(1)BX的内容为01A1H

(2)BX的内容为001FH

2.11 什么叫堆栈?采用堆栈的意义? 解:

2.12 若在数据段中从字节变量TABLE相应的单元开始存放了0~15的平方值,试写出包

含有XLAT指令的指令序列查找N(0~15)中的某个数的平方。(设N的值存放在CL中)

解: LEA BX, TABLE

2.13 编写程序对存放在DX,AX中的双字节长数据的求补 解:NOT

NOT ADD

ADC

2.14 写出实现下列计算的指令序列。(假定X、Y、Z、W、R都为有符号数字变量)

(1)Z=(W*X)/(R+6) (3)Z= (X+Y)/R - W 解:

(1)

MOV

IMUL MOV ADD IDIV MOV MOV

(2)

MOV

MOV IMUL

AX, W X BX, R BX, 6 BX Z, AX R, DX AX, Y BX, 5 BX

6

(2)Z=((W-X)/(5*Y))*2 (4)Z= (X/Y+ W )*100+R

DX AX AX, 1

DX, 0

;最低位加1,注意:不能用INC指令 ;把进位(如果有)传递到高位 ;首先将(DX, AX)取反

MOV AL, N XLAT

MOV MOV SUB MOV IMUL IDIV MOV

BX, AX AX, W AX, X CX, 2 CX BX Z, AX

(3)

MOV AX, X

ADD AX,Y CWD IDIV SUB MOV MOV CWD IDIV ADD MOV IMUL MOV MOV MOV CWD ADD ADC

AX,BX DX,CX R AX,W Z,AX AX,X Y AX,W BX,100 BX BX,AX CX,DX AX,R

(4)

;结果存放在DX、AX中

2.15 设在AX、BX、CX、DX中均存放的是用压缩的BCD码表示的4位十进制数,试

编写程序完成以下的计算: (1)(AX)+(BX) →AX (2)(DX)-(CX) →DX 解:(1)ADD AL, BL

DAA

ADC AL, BH

7

XCHG AL, AH

DAA

XCHG AL, AH (2)MOV AL,DL

SUB AL, CL

DAS

MOV DL, AL MOV AL, DH SBB AL, CH DAS

MOV DH, AL

2.16 简述指令的“DAA”和“DAS”对BCD码运算后进行调整的规则。解:DAA的调整规则:

if (AL低4位>9 或 AF=1)then AL=AL+06H ; AF=1 ; endif

if (AL高4位>9 或 CF=1)then AL=AL+60H ; CF=1 ; endif

DAS的调整规则:

if (AL低4位>9 或 AF=1)then AL=AL-06H ; AF=1 ; endif

if (AL高4位>9 或 CF=1)then AL=AL-60H ; CF=1 ; Endif

2.17 用程序段实现对存入在BX,AX的双字进行左移5位。 解:

SHL

AX,1

8

联系合同范文客服:xxxxx#qq.com(#替换为@)