1樓:可軒
add al,al 是低8位加法,若有
bai進du
位,進位zhi標誌cf=1,
但進位1自然丟失dao,不向ah進位.
若要得到專預期結果,指令可修改為:屬
mov ax, d888 ; 在dos的debug中輸入指令,數值無須加h字尾,預設為16進數
add ax, 0088
int 3
執行結果,ax =d910
2樓:匿名使用者
這個只加的al就只對al進行操作,不會去操作ah。
3樓:匿名使用者
add是簡單加,adc才是帶進位加
組合語言進位與借位的問題。
4樓:匿名使用者
你這裡混淆了兩個概念,無符號數和有符號數。
如果你希望得到2-3=-1,那麼你應該認為2和-3都是有符號數,既然是有符號數,是否產生借位要看of標誌位,即溢位標誌位;
如果你認為2和-3的補碼對應的無符號數253都是無符號數,那麼它們之和為255,沒有產生進位。
所以,當你判斷有符號數的時候,不應該看cf來判斷是否有借位。
不管怎樣,機器中的運算是00000010+11111101,結果為11111111,cf為0,of為1。
5樓:匿名使用者
王爽《組合語言》第二版是這麼說的:
一般情況下,在進行無符號數運算的時候,它(cf)記錄了運算結果的最高有效位向更高位的進位值,或從更高位的借位值。
也就是說,在2-3的時候,它產生了借位,cf為1;而2+(-3)的時候,計算機把它當作2+fch的運算來影響cf,所以cf為0
彙編標誌暫存器,進位與借位的理解
6樓:本末終始
1.進位
假設a暫存器是8位的,最大的數是"11111111",現在加1,應該變成「100000000」,但只能放8位,怎麼辦?--->用cf參與進來,a中則放「00000000」。
2.借位
道理一樣.
7樓:匿名使用者
計算機中是補碼運算的,減法是用補碼加法來實現,所以就內部而言只有進位一說,都是有則置位cf,沒有則置零cf。但對我們使用者來講,加法運算產生的進位就叫「進位」,而減法運算產生的進位就叫「借位」。
8樓:匿名使用者
mov ax 0xff
inc ax
這時ax=0進位了所以 cf=1
mov ax 2
add ax 3
這時ax=5不進位cf=0
mov ax 0
dec ax
0減1需要借位(這個知道吧,小學學
版豎式運算)...借位了所以cf=1
明瞭沒?就是凡是進權位或者借位cf置1
呵呵...最後很猥瑣的問下...
能不能加點分啊?這知識無價呀...呵荷...
組合語言的問題,一個組合語言的問題
jmp byte ptr bx 改正 baijmp word ptr bx byte 需改du為 zhi word才可以 shl word ptr bx 2改正 mov cx,2 shl word ptr bx cx當移位次dao數 1時,專要使用cx寄存屬器 理由抄很簡單,因為8086cpu不支援...
關於組合語言的問題,有關於組合語言的問題
樓主的從 看來的?裡面有些是錯誤的。8086 8088可定址的儲存空間只有1mb。這1mb的空間在邏輯上 注意 是邏輯上,實際上還是一個整體 被分成若干塊,每個塊的大小為64kb 其中,每一個塊中又被分成若干小節,每個小節16b,故而整個記憶體1mb可以被分為64k個小節 注意 不是64k個塊 對比...
懂組合語言的進,組合語言高手進
很簡單的程式。輸入的數字,是acscii碼形式的,要減去30h,才是數字形式的數字。程式中,兩個輸入數字,全都減去了30h,然後進行了加法,結果存入ral單元。輸出顯示,要先把數字,變換成ascii碼,僅僅加30h,是不全面的,數字大於9,就要加37h,這些可以去查ascii表,求得證明。dseg ...