2.1已知DS=2000H、BX=0100H、SI=0002H,存储单元[20100H]~[20103H]依次存放12 34 56 78H,[21200H]~[21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容。
(1) mov ax,1200h (2) mov ax,bx (3) mov ax,[1200h] (4) mov ax,[bx] (5) mov ax,[bx+1100h] (6) mov ax,[bx+si] (7) mov ax,[bx][si+1100h] 〔解答〕 (1)AX=1200H (2)AX=0100H
(3)AX=4C2AH ;偏移地址=bx=0100h (4)AX=3412H ;偏移地址=bx=0100h (5)AX=4C2AH ;偏移地址=bx+1100h=1200h
(6)AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h
(7)AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h
〔习题2.2〕指出下列指令的错误 (1) mov cx,dl (2) mov ip,ax (3) mov es,1234h (4) mov es,ds (5) mov al,300 (6) mov [sp],ax (7) mov ax,bx+di
(8) mov 20h,ah 〔解答〕
(1)两操作数类型不匹配 (2)IP指令指针禁止用户访问 (3)立即数不允许传给段寄存器 (4)段寄存器之间不允许传送 (5)两操作数类型不匹配 (6)目的操作数应为[ SI ] (7)源操作数应为 [BX+DI] (8)立即数不能作目的操作数
〔习题2.5〕已知SS = 2200H、SP = 00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化? mov ax,8057h
push ax mov ax,0f79h push ax pop bx pop [bx] 〔解答〕
mov ax,8057h push ax mov ax,0f79h push ax
pop bx ;bx=0f79h pop [bx] ;DS:[0f79h]=8057h
〔习题2.6〕给出下列各条指令执行后AL值,以及CF、ZF、SF、OF和PF的状态: mov al,89h add al,al add al,9dh cmp al,0bch sub al,al dec al inc al 〔解答〕
mov al,89h ; AL=89h CF ZF SF OF PF add al,al ; AL=12h 1 0 0 1 1 ; 1000 1001 +1000 1001 10001 0010
add al,9dh ; AL=0afh 0 0 1 0 1 ; 0001 0010 + 1001 1101
1010 1111
cmp al,0bch ; AL=0afh 1 0 1 0 1 ; 1010 1111 -1011 1100 * 0100 0011
sub al,al ; AL=00h 0 1 0 0 1
dec al ; AL=0ffh 0 0 1 0 1 ; 0000 0000 - 0000 0001 *1111 1111
inc al ; AL=00h 0 1 0 0 1 ;1111 1111 +0000 0001 *1111 1111
必考:〔习题2.10〕指出下列指令的错误:(1) xchg [si],30h
(2) pop cs (3) sub [si],[di] (4) push ah (5) adc ax,ds (6) add [si],80h (7) in al,3fch (8) out dx,ah
〔解答〕
(1)xchg的操作数不能是立即数 (2)不应对CS直接赋值
(3)两个操作数不能都是存储单元 (4)堆栈的操作数不能是字节量 (5)adc的操作数不能是段寄存器 (6)没有确定是字节还是字操作 (7)in不支持超过FFH的直接寻址 (8)out只能以AL/AX为源操作数
〔习题2.11〕给出下列各条指令执行后的结果,以及状态标志CF、OF、SF、ZF、PF的状态。 mov ax,1470h
and ax,ax or ax,ax xor ax,ax not ax test ax,0f0f0h
〔解答〕
mov ax,1470h ;AX=1470H CF ZF SF OF PF
and ax,ax ;AX=1470H 0 0 0 0 0 ;0001 0100 0111 0000
or ax,ax ;AX=1470H 0 0 0 0 0 xor ax,ax ;AX=0000H 0 1 0 0 1 not ax ;AX=FFFFH 0 1 0 0 1 test ax,0f0f0h ;AX=FFFFH 0 0 1 0 1