組合語言中加減法運算的溢位處理

2021-06-20 06:29:59 字數 881 閱讀 7494

1.無符號數運算

只有相加才有可能溢位 ,以及小減大肯定溢位,大減小不會溢位

相加前在編碼前加個0,作為符號位.如果結果的符號為1,則溢位.

舉例,12+7=19(溢位)  

01100+00111=10011

2.有符號數運算

兩個異號數相加或兩個同號數相減,其結果不會溢位 .僅當兩個同號數相加或兩個異號數相減 ,才有可能發生溢位的情況.

今以4位二進位制補碼整數加法運算為例說明如下:

(前注,4位二進位制只能表示-8~7,所以必需在前面加個符號位)

9+5=14

01001+00101=01110

(-9)+(-5)=-14

10111+11011=110010

12+7=19(溢位)

01100+00111=10011

(-12)+(-7)=-19(溢位)

10100+11001=101101

14-1=13

01110+11111=101101

-14+1=-13

10010+00001=10011

判別方法:當符號相同的兩數相加時,如果結果的符號與加數(或被加數)不相同,則為溢位。

真實案例:

mov bx,9048h    ;bx=9048h,即bh=90h,bl=48h

sub bh,bl             ;bh=48h,bl=48h,即bx=4848h

;cf=0    of=1

解釋:無符號運算,大數減小數,所以不溢位,所以cf=0;

有符號運算,90-48=10010000-01001000=10010000+10111000=101001000(必須轉成補碼加法,才能使用該方法判斷,且暫存器bh,bl中的最高位即為符號位)

組合語言使用加減法實現有符號數除法

老問題了,今天突然想起來實現一下。主要有幾個問題要注意 1 同號則做減法,異號則做加法 2 運算結束 若 被除數 或 除數 為0結束,或其符號和 被除數 相反則結束,兩種情況還要做不同的處理 使用加減法實現有符號數除法 1 同號則做減法,異號則做加法 2 運算結束 若 被除數 或 除數 為0結束,或...

加減運算 加減法運算的尾數法

在數量關係中,涉及到整數的乘法和加減法,可以考慮尾數 在資料分析中,凡是涉及到數的加減運算,可以考慮尾數法,即便不是整數間的加減法,尾數法也有參考價值。比如123.1 45.6,尾數大概率是7,小概率6或者8,而不可能是其餘的數字。為什麼可能是6或者8呢?因為1和6可能是四捨五入得來的。1的精確值是...

時間類的加 減法賦值運算

輸入的第乙個整數n,表示有n組測試資料,每組4個整數,前三個整數為 hh,mm,ss,分別表示時 分 秒,其值都在int範圍內,最後乙個整數為m。output 每個輸入對應兩行輸出,分別為時間 hh,mm,ss 加上m秒和減去m秒後的值。錯誤的時間輸出 time error sample input...