当前位置:首页 > 微机原理与接口技术(科学出版社)第4章课后习题及答案
微机原理与接口技术第四章课后习题
1.指令主要有哪些分类方式? 其主要类别是什么? 答:操作数、级别、功能。
操作数:无操作数、单操作数、双操作数三操作数; 级别:机器指令和汇编指令
功能:传送类、算术运算类、位操作类、I/O类、串操作类、CPU控制类、转移类; 2.80X86的寻址方式有哪些?它们的具体含义是什么?
答:操作数寻址方式主要有立即寻址方式、寄存器寻地址、存储器寻址方式、端口寻址方式 (1)立即寻址方式:操作对象是这个操作数本身 (2)寄存器寻地址:操作对象是寄存器中的内容
(3)存储器寻址方式:操作对象是内存地址所对应的存储单元中的内容
(4)端口寻址方式:操作数是指明端口的地址、端口地址所对应的端口中的内容是操作对象 3. 指出下列各指令中源操作数和目的操作数的寻址方式: ⑴MOV BX,WORD PTR[2200H] ⑶JUM 2200H 答:
⑴ MOV BX, WORD PTR[2200H] 源操作数:直接寻址;目的操作数:寄存器寻址 ⑵ AAA 源操作数:寄存器寻址AL(也称隐含寻址);目的操作数:寄存器寻址 ⑶ JUM 2200H 程序转移段内直接寻址方式
⑷ LES DI,[2100H] 源操作数:直接寻址;目的操作数:寄存器寻址
⑸ MOV [BX+SI+8], BX 源操作数:寄存器寻址;目的操作数:相对基址变址寻址 ⑹ ADD AX,[BP+3000H] 源操作数:直接寻址;目的操作数:寄存器相对寻址 4. 设
CS=1000H,DS=2000H,ES=3000H,SS=4000H,IP=100H,SP=200H,BX=300H,BP=400H,SI=500H,则: (1)10202H (2)40300H (3)21010H (4)42156H (5)31510H
5.写出清除AX寄存器内容的方法并比较。 MOV AX,0 XOR AX,AX
异或指令执行速度最快
6. 若AX=0ABCDH,BX=7F8FH,CF=1。求分别执行8086 CPU指令后,AX寄存器中的内容,并指出标志寄存器SF,ZF,AF,PF,CF及OF的状态。 ⑴ ADD AX,BX ⑶ SBB AX,BX ⑸ AND AX,BX ⑺ XOR AX, BX 答:
⑵ ADC AX,BX ⑷ NEG AX ⑹ OR AX,BX ⑻ IMUL BL
⑸ MOV [BX+SI+8], BX
⑵ AAA
⑷ LES DI,[2100H] ⑹ ADD AX,[BP+3000H]
⑴ AX=2B5CH, SZAPCO=001110B ⑶ AX=2C3DH, SZAPCO=001001B ⑸ AX=2B8DH, SZAPCO=00X100B ⑺ AX=D442H, SZAPCO=10X100B 7.若AL=78H,BL=87H
⑵ AX=2B5DH, SZAPCO=001010B
⑷ AX=5433H, SZAPCO=001110B ⑹ AX=FFCFH, SZAPCO=10X100B ⑻ AX=3283H, SZAPCO=XXXX11B
⑴ 求执行指令ADD AL,BL与DAA后,AL=?、标志AF=?、CF=? ⑵ 若执行指令 SUB AL,BL与DAS后,AL=?、标志AF=?、CF=? 答:
⑴ AL=65H, AF=1, CF=1。 ⑵ AL=91H, AF=0, CF=1。
8.指出下列指令中哪些是错误的,并指出错在何处? ⑴ MOV DL,[DX] ⑶ SUB [BX],[SI] ⑺ IN AL,DX 答:
⑴ 错,DX不能作为间接寻址的寄存器。 ⑵ 错,立即数不能直接送给段寄存器。 ⑶ 错,两个存储单元间内容不能直接相减。 ⑷ 错,CX寄存器不能作为变址寄存器。
⑸ 错,不允许段寄存器与存储单元内容进行交换。 ⑹ 错,减1指令不能对段寄存器直接操作。 ⑺ 对。
⑻ 错,输出指令的地址若是16位,必须用DX间址。 9.下列程序段执行后 AX=? 设数据段有: TABLE
ENTRY MOV MOV MOV
代码段
DW 100,200,300,400 DW 3
BX,OFFSET TABLE SI,ENTRY AX,[BX+SI]
⑵ MOV ES,2000H ⑷ ADD AX,[BX+CX] ⑹ DEC 15H ⑻ OUT 300H,AX
⑸ XCHG DS,[2400H]
对DS初始化
执行后 AX=2C00
10.将AL中的8位二进制数按倒序方式重新排列,即AL原来为D7D6…D0,倒序后AL=D0D1…D7。 答: MOV CX, 8 L:SHL AL, 1 RCR BL, 1 LOOP L MOV AL, BL
11.若起始地址偏移量为2000H的内存单元存放有100个ASCII码字符,现给这些字符添加奇偶校验位(bit7),使每个字符中“1”的个数为偶数,在顺序输出到地址为100H的端口。 答:
MOV SI, 2000H MOV CX, 100
MOV DX, 100H NEXT2:MOV AL, [SI] AND AL, 0FFH JPE NEXT1 OR AL, 80H NEXT1:OUT DX, AL INC SI LOOP NEXT2 MOV AH, 4CH INT 21H
12.若SS=1000H,SP=2000H,AX=1234H,BX=5678H,FR=2115,试说明执行指令 PUSH AX PUSH BX PUSHF POP CX POP DX
之后,SP=? SS=? CX=? DX=? 并画图指出堆栈中各单元的内容。 答: SS=1000H SP=1FFEH CX=2115H DX=5678H
栈中各单元内容如下所示: 地址 11FFAH 11FFCH 11FFEH 12000H RAM 2115 5678 1234
13.分别写出实现下列功能的程序段:
(1)将AX中间8位,BX低四位,DX高四位拼成一个新字的程序段是: AND DX, 0F000H AND AX, 0FF0H AND BX, 0FH SHL AX, 4 SHL BX, 4 ROL DX, 4 ADD AX, BX ADD AX, DX
(2)对数据段中以BX为偏移地址的连续三单元中的无符号数求和。
MOV AL,[BX] MOV AH,0 ADD AL,[BX+1] ADC AH,0 ADD AL,2 [BX] ADC AH,0
(3)将数据段中以BX为偏移地址的连续四单元的内容颠倒过来。 MOV AX,[BX] XCHG AH,2[BX] XCHG AL,3[BX] MOV [BX],AX
(4)将BX中的四位BCD数用非压缩BCD数按序放在AH、AL、CH和CL中。 MOV DX,BX MOV CL,4 SHR BX,CL AND BL,0FH AND DX,0F0FH MOV AH,BH MOV CH,BL MOV AL,DH MOV CL,DL
14.在不改变AL中数值的情况下,检测AL中1的个数,将结果放在BL中。 XOR BX, BX MOV DL, AL MOV CX, 8
CIRCLE:TEST DL, 01H JNP ZERO ADD BL, 01H ZERO:SHR DL, 01H LOOP CIRCLE 15.程序分析。 (1)AX=05CFH (2)CF=0,AL=B9H (3)SF⊕OF=1,CF=0 16.程序语句填空。
(1)下列是完成1~20之间的奇数累加和存于AL中的程序段: XOR AL, AL MOV CX, 10 MOV BL, 1
AGAIN:ADD AL, BL ADD BL, 2 LOOP AGAIN
(2)下列是在串长为N的串STR中查找是否有’T’字符的程序段: MOV Dl,SEG STR
MOV ES,DI LEA Dl,STR CLD
MOV CX,N MOV AL,’T’ REPNE SCASB JZ FOUND
(3)下列是完成1位十六进制数X显示的程序段: MOV DL, X AND DL, 0FH ADD DL, 30H CMP AL, ’9’ JBE NEXT ADD DL, 7
NEXT:MOV AH, 02H INT 21H
17.假定AX和BX中的内容为带符号数,CX和DX的内容为无符号数,请用比较指令和转移指令实现以下条件转移:
(1)若CX的内容超过DX的内容,则转到L1。 CMP CX,DX JA L1
(2)若BX的内容大于AX的内容,则转到L2。 CMP BX,AX JG L2
(3)判断BX与AX相比较是否产生溢出,若溢出则转到L3。 CMP BX,AX JO L3
(4)若BX的内容小于等于AX的内容,则转到L4。 CMP BX,AX JLE L4
@张宏宇
共分享92篇相关文档