看板 ASM 關於我們 聯絡資訊
根據我讀到的 Carry flag是指當計算出一個unsigned value 對於destination operand來說為out of range時 則carry flag會被設定為1 Overflow flag是指計算出一個signed value 對於destination operand來說為invalid或者out of range時 則overflow flag會被設定為1 不知道上面得描述對不對 然後又看到一個例子 mov al, -128 neg al ; CF=1 OF=1 上面這個我不太懂 為何CF和OF同時被set -128去作neg為128 對於al來說的unsigned範圍(0~255) 對於al來說的signed範圍(-128~127) 那應該只有超過signed的範圍 所以只有OF被設定為1 但不知道位什麼連CF也被設定為1了 還有一個問題就是補數的問題 128換成二進位為10000000 若要作-128則是將其換成二補數 也就是01調換之後再將其加上1 等於01111111+1=10000000 又變回了128 這讓我蠻疑惑的 為何128=-128 剛開始接觸組合語言 問題有點新手 請見諒 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.218.212.16
wgst88w:當最高位元發生借位時CF=1,當位元數超出CPU所能運算OF=1 03/14 23:44