微机原理课后习题解答 下载本文

;以X为首址的字单元中的数据依次为1234H、5678H ;以Y为首址的字单元中的数据依次为8765H、4321H

LEA LEA MOV MOV ADD ADC CMP JL CMP JL JMP

L1: MOV

JMP

L2: MOV EXIT:……

SI,X DI,Y DX,[SI+2] AX,X AX,X DX,[SI+2] DX,[DI+2] L2 AX,Y L1 EXIT AX,1 EXIT AX,2

答:执行结果为(AX)=2,(DX)=0ACF0H。

26.设VAR字单元的值为x,F1字单元的值为y,试编程按以下要求给y赋值:

2

x>30

y =

0 30≥x≥1

x<1

-2

答:一种可能的程序段实现如下:

MOV AX,VAR ;AX CMP AX,30 JG

PLUS2 ;x>30,则转PLUS2

x

CMP AX,1 JL

MIN2

;x<1,则转MIN2

MOV F1,0 ;30≥x≥1,y=0 JMP GO

PLUS2:MOV F1,2 ;y=2

JMP

GO

MIN2: MOV F1,-2 ;y = -2或00FEH GO:……

;后续处理

简析:本例中并未说明VAR字节单元是带符号数还是无符号数,读者在使用判断转移指令时可任意选用。若当作带符号数,应使用JG、JL、JGE、JLE等指令,如参考程序;若当作无符号数,则应使用JA、JB、JAE、JBE等指令。

第四章 80x86汇编语言程序设计

习题与答案

1、指出以下数据定义伪指令所分配的字节数(8086系统)。 (1)DATA1 DB 10,?,‘A’

(2)DATA2 DW 10 DUP(2,3 DUP(?),1) (3)DATA3 DB ‘HELLO,WORLD!’,‘$’ (4)DATA4 DW DATA4

解:(1)3字节; (2)100字节; (3)13字节; (4)2字节。

2、指出以下数据定义伪指令所分配的字节数(80386系统)。 (1)DATA1 DF 12,34,56 (2)DATA2 DF DATA2

(3)DATA3 DQ 0,10 DUP(?) (4)DATA4 DT 0,1,2

解:(1)18字节;

3、指出以下指令中哪些是无效的,并说明原因。 (1)ADDR (2)DATA (3)1_DATA (4)@VAR (5)MOV (6)MOV 解:

(1)非法,地址计数器$是32位数;

(2)非法,以字母开头的16进制数应在前面加“0”,即应为“0F0H”;

DB $ DB F0H,12H DW 1234H DW VAR1

;VAR1为一个字节变量

(3)6字节;

(3)88字节; (4)30字节。

AX,[10-VAR1] ;VAR1为一个字变量 BX,[VAR2*2+1] ;VAR2为一个字变量

(3)非法,变量名非法,不能以数字开头; (4)合法;

(5)非法,地址表达式不能是“常数-地址”; (6)非法,地址表达式不能出现乘法。

4、假设已定义数据段如下: DATA

SEGMENT ORG

100H

10 DUP(1,2,3) DATA1,$

DATA1 DB DATA2 DW DATA

ENDS

且段寄存器DS已初始化为该数据段的段基址(假设段基址为1234H)。请指出以下指令执行后,相应的寄存器中的内容。 (1)MOV (2)MOV (3)MOV (4)MOV (5)MOV (6)MOV (7)MOV (8)MOV 解:

(1)(AX)=0201H; (2)(BX)=0100H; (3)(CX)=0120H; (4)(DX)=011EH; (5)(SI)=1234H; (6)(DI)=000AH; (7)(SP)=0001H; (8)(BP)=0002H。

5、在8086系统下,编写完整程序,实现从键盘上输入8位二进制数,从显示器上显示相应的16进制数,例如从键盘上输入“00010010”,应在显示器上显示“12H”。

AX,WORD PTR DATA1 ;(AX)=? BX,DATA2 CX,DATA2+2

;(BX)=? ;(CX)=?

DX,OFFSET DATA2 ;(DX)=? SI,SEG DATA1

;(SI)=?

DI,LENGTH DATA1 ;(DI)=? SP,TYPE DATA1 BP,SIZE DATA2

;(SP)=? ;(BP)=?