首先補充一些知識
cf(carry flag):進製標誌位 of(overflow flag):溢位標誌位 sf(sign flag):負數標誌位 zf(zero flag):零標誌位
pf(parity):奇偶標誌位
cf是對無符號數進行運算,紀錄的進製值或借位值
of是對有符號數會不會產生溢位的標誌 同樣的sf也是對有符號數操作的。
同樣一條指令,例如 add al,80h (假設原先al裡的值位80h)
那麼此時 cf=1 因為80h+80h=100h,超出al所能儲存的2位16進製制數了,此時al=00h
這裡的of等於多少呢? 它也等於 1 因為of是對口有符號數,80h在有符號數里 = -128,-128+(-128)=-256 超出了-128~127,所以溢位了。
那麼sf應該等於多少呢?,書中講它是對有符號數執行等結果是否為負數,看上面結果=-256那sf=0嗎?
其實不是雖然結果=-256,但是它看的是al中的值由於al=00h,所以應該sf=1
下面給出11.2的**(帶答案,與主流答案有乙個出入,我會特別標出來)
cfof
sfzf
pf注釋
sub al,al00
011mov al,10h00
011add al,90h00
101a0h(-96)
mov al,80h10
10180h(-128)
add al,80h11
011mov al,0fch11
0110fch(-4)
add al,05h10
00005h(5)
mov al,7dh10
0007dh(125)
add al,0bh01
0010bh(11)
最後的 那一條,7dh+0bh(125+11=136)明明是正數sf應該=0,但我看其他的資料sf=0,搞不懂為什麼。歡迎解答
組合語言(王爽第三版)檢測點13
1 在上面內容中,我們用7ch中斷例程實現loop功能,則上面的7ch中斷例程所能進行的最大轉移位移是多少?答案 題目描述個人感覺有二義性,因此從loop實現角度和位移值bx變數兩方面來討論 如果從loop的指令角度上看,loop是段內短轉移,它的範圍是 128 127,也就是說最大轉移位移是128...
王爽《組合語言(第三版)》檢測點11 1
寫出下面每條指令執行後,zf pf sf等標誌位的值。指令sub al,al mov al,1 push ax pop bx add al,bl add al,10 mul al zf 0 pf 偶 sf 負 zf標誌 是否為0 pf標誌 結果中是否有偶數個為1的bit位。sf標誌 結果是否為負,僅...
王爽彙編第三版 實驗七
assume cs code,ds data,es table data segment db 1975 1976 1977 1978 1979 1980 1981 1982 1983 db 1984 1985 1986 1987 1988 1989 1990 1991 1992 db 1993 1...