-72- | PC机汇编语言实战精解 | ![]() |
|||||||||||||||||||
-a[Enter] 13CD:0100 13CD:0103 13CD:0106 13CD:0108 13CD:010A 13CD:010C |
mov ax,100 mov bx,200 cmp ax,bx sub bx,ax sub ax,bx |
||||||||||||||||||||
-r | |||||||||||||||||||||
AX=0000 | BX=0000 | CX=0000 | DX=0000 | SP=FFEE | BP=0000 | SI=0000 | DI=0000 | ||||||||||||||
DS=13CD | ES=13CD | SS=13CD | CS=13CD | IP=0100 | NV UP EI PL NZ NA PO NC | ||||||||||||||||
13CD:0100 | B80001 | MOV AX,0100 | 注意ZF、CF两标志 | ||||||||||||||||||
首先利用"MOV"指令将100H与200H分别置入AX和BX而寄存器。 | |||||||||||||||||||||
-t | AX寄存器置入100H | ||||||||||||||||||||
AX=0100 | BX=0000 | CX=0000 | DX=0000 | SP=FFEE | BP=0000 | SI=0000 | DI=0000 | ||||||||||||||
DS=13CD | ES=13CD | SS=13CD | CS=13CD | IP=0103 | NV UP EI PL NZ NA PO NC | ||||||||||||||||
13CD:0103 | BB0002 | MOV BX,0200 | BX寄存器置入200H | ||||||||||||||||||
设置好AX、BX寄存器后即可以观察CMP等指令对标志寄存器的影响。 | |||||||||||||||||||||
-t | AX、BX寄存器已设置 | ||||||||||||||||||||
AX=0100 | BX=0200 | CX=0000 | DX=0000 | SP=FFEE | BP=0000 | SI=0000 | DI=0000 | ||||||||||||||
DS=13CD | ES=13CD | SS=13CD | CS=13CD | IP=0106 | NV UP EI PL NZ NA PO NC | ||||||||||||||||
13CD:0106 | 39D8 | CMP AX,BX | CMP指令的实质是一次减法 | ||||||||||||||||||
CPU在执行CMP指令时会将AX和BX两寄存器进行一次减法,但结果并不保留。只是标志寄存器会依据相减的结果发生变化。由于AX寄存器中的数值小于BX寄存器,所以我们可以想到指令执行后CF标志将有变化。 | |||||||||||||||||||||
-t | |||||||||||||||||||||
AX=0100 | BX=0200 | CX=0000 | DX=0000 | SP=FFEE | BP=0000 | SI=0000 | DI=0000 | ||||||||||||||
DS=13CD | ES=13CD | SS=13CD | CS=13CD | IP=0108 | NV UP EI NG NZ NA PE CY | ||||||||||||||||
13CD:0108 | 29C3 | SUB BX,AX | 小的数减大的数产生借位 | ||||||||||||||||||
下面的根踪反映了大的数减去小的数时标志寄存器的变化情况,可以清楚地看到刚刚变成"CY"的CF标志位又重新置成"NC"。 | |||||||||||||||||||||
Copyright © 2004-2015 Reanimator | www.cookmoon.org |