. (5) mov eax,[1000h] (6) mov dx,[ebx+esi*8] 寄存器寻址
(7) mov edx,eax (8) mov dx,[ebp*2+8] 寄存器寻址
(9) mov dx,[ebx+8] 器寻址
;源操作数:直接寻址,目的操作数:寄存器寻址 ;源操作数: 基址加比例变址寻址,目的操作数:;源操作数:寄存器寻址,目的操作数:寄存器寻址 ;源操作数: 比例变址加位移寻址,目的操作数:;源操作数: 基址加位移寻址,目的操作数:寄存
(10) mov ax,[ebx+esi*2+78h] ;源操作数: 基址加比例变址加位移寻址,目的操作数:寄存器寻址
3.3 指出下列指令的错误原因 解:
(1) inc [si]
;目的操作数类型不明确
;源操作数和目的操作数类型不匹配 ;立即数不能作目的操作数
;源操作数和目的操作数不能同时为存储器操作数 ;基址变址寻址方式不能同时为基址寄存器
;基址变址寻址方式不能同时为变址寄存器 ;300超出了ah可以容纳的数据围
;cs不能由程序员赋值,它由系统自动赋值 ;push要求操作数为16位或32位
;当移位次数超过1时,先将移位次数送cl,再移位 ;基址变址寻址方式缺少一对方扩号
;ip不能由程序员赋值,它由系统自动赋值 ;源操作数和目的操作数不能同时为段寄存器 ;入栈只能用push指令实现
(2) mov eax,bx (3) mov 2,ax
(4) mov [ebx],[edi] (5) mov ax,[bx+bp] (6) mov ax,[si+di] (7) mov ah,300 (8) mov cs,1000h (9) push al (10) shl ax,8 (11) mov ax,bx+di (12) mov ip,bx (13) mov es,ds (14) mov [sp],ax
3.4 比较下列两条指令,指出他们的区别。 解:
mov eax,[si] mov [si],eax
3.5 假设(EAX)=12345678H,写出下面每条指令单独执行后,(EAX)=? 解:
.
;从存读数据送eax ;把eax的值写入到存
《微机原理与接口技术》复习题
(1) and eax,0000ffffh (2) test eax,1 (3) xor eax,eax
;(eax)=00005678h ;(eax)=12345678h ;(eax)=0 ;(eax)=0
;(eax)=12345679h ;(eax)=12345679h ;(eax)=12345678h ;(eax)=12345679h ;(eax)=12345677h ;(eax)=12345670h
(4) sub eax,eax (5) add eax,1 (6) or eax,1 (7) cmp eax,0000ffffh (8) inc eax (9) dec eax (10) sub eax,8
3.6 假定(AX)=1234H,(BX)=00FFH,回答每条指令单独执行后,(AX)=?(BX)=? 解:
(1) and ax,bx
;(ax)=0034h
(bx)=00ffh (bx)=00ffh (bx)=00ffh (bx)=1234h (bx)=00ffh (bx)=0eecbh (bx)=12ffh (bx)= 00ffh
(2) test ax,bx ;(ax)=1234h (3) xor ax,bx
;(ax)=12cbh
(4) xchg ax,bx ;(ax)=00ffh (5) add ax,bx (6) sub bx,ax (7) or bx,ax (8) cmp ax,bx
;(ax)=1333h ;(ax)=1234h ;(ax)=1234h ;(ax)=1234h
3.7 假设(EAX)=11223344H,(EBX)=11225566H,写出下面程序段每条指令执行后(EAX)=?(EBX)=?
解:
add eax,ebx
;(eax)=224488aaH,(ebx)=11225566H
;(eax)=22448932H,(ebx)=11225566H
add eax,00000088h
sub eax,ebx
;(eax)=112233ccH,(ebx)=11225566H ;(eax)=112233ccH,(ebx)=11225567H ;(eax)=112233ccH,(ebx)=00005567H
inc ebx and ebx,0000ffffh
3.8 已知(DS)=1000H,(BX)=0100H,(SI)=0004H,存储单元[10100H]~[10107H]依次存放11H 22H 33H 44H 55H 66H 77H 88H,[10004H]~[10007H] 依次存放2AH 2BH 2CH 2DH,说明下列每条指令单独执行后AX中的容。
- -
10
. 解:
(1)MOV AX,[0100H] (2)MOV AX,[BX]
;(AX)=2211H ;(AX)=2211H ;(AX)=2B2AH ;(AX)=4433H ;(AX)=2B2AH
;(AX)=2D2CH ;(AX)=6655H ;(AX)=8877H
(3)MOV AX,[0004H] (4)MOV AX,[0102H] (5)MOV AX,[SI]
(6)MOV AX,[SI+2] (7)MOV AX,[BX+SI] (8)MOV AX,[BX+SI+2]
3.9 已知(DS)=1000H,(EBX)=0100H,(ESI)=0004H,存储单元[10100H]~[10107H]依次存放11H 22H 33H 44H 88H 77H 66H 55H,[10004H]~[10007H] 依次存放8AH 8BH 8CH 8DH,说明下列每条指令执行后EAX中的容。
解:
(1)MOV EAX,[0100H] (2)MOV EAX,[EBX] (3)MOV EAX,[EBX+4]
;(EAX)=44332211H ;(EAX)=44332211H ;(EAX)=55667788H
(4)MOV EAX,[0004H] ;(EAX)=8D8C8B8AH
(5)MOV EAX,[ESI] ;(EAX)=8D8C8B8AH (6)MOV EAX,[EBX+ESI] ;(EAX)=55667788H
3.10 什么是堆栈?它的工作原理是什么?它的基本操作有哪两个? 答:
堆栈是在存RAM中开辟的一段空间,利用“先进后出”或“后进先出”的原则存取数据。如果把数据压入堆栈,则堆栈指针的值是减少的,即所谓的向下生成堆栈。由SS:SP(16位)或SS:ESP(32位)指向栈底(栈空)或栈顶(栈不空)地址。它的基本操作有数据入栈指令PUSH和数据出栈指令POP。
3.11 设SS=1000H,SP=0100H,指出下列每条指令执行后,(AX)=?(BX)=?(SP)=?并且回答堆栈中的容如何?
解:
MOV AX,2233H PUSH AX
;(AX)=2233H,(BX)不确定,(SP)=0100H ;(AX)=2233H,(BX)不确定,(SP)=00FEH ;(AX)=2233H,(BX)=4455H,(SP)=00FEH
MOV BX,4455H
.
《微机原理与接口技术》复习题
PUSH BX POP AX POP BX ;(AX)=2233H,(BX)=4455H,(SP)=00FCH ;(AX)=4455H,(BX)=4455H,(SP)=00FEH ;(AX)=4455H,(BX)=2233H,(SP)=0100H
这段指令执行后将AX和BX的值互换。 3.12 什么是16位段?它有何特点? 答:
32位微机在上电或复位后,微处理器首先工作在实地址模式,它与8086/80186的
工作方式具有相同的基本结构,也只能寻址1MB物理存储空间,分段最大只能是64KB,但是,在实地址模式下,32位X86 CPU可以使用16位寄存器和16位寻址方式,这与8086 CPU兼容,32位X86 CPU还可以使用32位寄存器和32位寻址方式,处理32位数据及执行32位的新增指令,但是,段基地址和偏移量都只用16位,6个段寄存器仍然当作16位的段寄存器使用,对于偏移地址来说,如果是32位,则高16位应该为0,只有低16位偏移地址有效,相当于可以进行32位数处理的快速8086,所以称之为“16位段”。
3.13 什么是32位段?它与16位段的主要区别如何? 答:
32位X86 CPU由实地址模式可以进入保护工作模式,它是一个增强了80286保护模式功能的32位保护工作模式。在保护工作模式下,32位微处理器不仅具有段式存储器管理功能,而且还有页式存储器管理功能,支持虚拟存储器,段基地址和段偏移量都是32位,称之为“32位段”,使用全部32条地址线,可以寻址的物理存储器达到4GB,只有在保护模式下,32位X86 CPU才能发挥全部功能。而32位段的程序只能在32位Windows环境中执行。
3.14 16位存储器寻址中,分为哪几种寻址方式? 答:
(1)直接寻址
(2)基址寻址(包括相对基址寻址) (3)变址寻址(包括相对变址寻址) (4)基址(加)变址寻址 (5)相对基址(加)变址寻址
3.15 32位存储器寻址中,分为哪几种寻址方式? 答:
(1)直接寻址 (2)基址寻址
- -
12
相关推荐: