首先先來解釋一下標誌位of、cf不同數值所代表的含義
of為1時,代表有符號數越界,即當8位時,超出-128~127的範圍
of為0時,代表有符號數未越界
cf為1時,代表無符號數越界,即當8位時,超出0~255的範圍
cf為0時,代表無符號數未越界
另外cf在迴圈移位/移位類指令中用來儲存從最高位或最低位移出的0或1。
我們知道,當這個數是有符號數時,最高位是符號位,1代表負數,0代表負數。
現用emu8086編寫**如下
mov al, 10000111b
sub al, 00001000b
那麼執行過後,cf和of分別是什麼呢?
我們先看看負數的二進位制如何表示
負數由其絕對值再取反碼(除符號位)+1構成
例:-1的原碼:1000 0001
其反碼為:1111 1110
再加1得:1111 1111
那麼首先我們知道10000111b代表有符號數時是-121,代表無符號數時是135,
10000111b -121 135
00001000b 8 (或已經超出界限的-248)
那麼在執行**後得出
01111111
由於我們只有八位,無法顯示出更多,所以我們可以看出,若是有符號數
結果為-129,-129的二進位制數是
101111111,顯然越界,此時of為1
若是無符號數
結果為127,顯然不越界,此時cf為0
二進位制加 減法程式設計實驗
1 熟悉組合語言二進位制多位元組加法基本指令的使用方法 2 熟悉組合語言二進位制多位元組減法基本指令的使用方法 3 掌握組合語言程式設計的一般結構。1 硬體環境 微機cpu 486以上,500mb以上硬碟,32m以上記憶體 2 軟體環境 裝有masm 5.0 debug link和edit等應用程式...
二進位制底層加減法的實現原理
計算機底層儲存的基本單位為bit 也就是0與1,數字的表示也是以一串二進位制來表示。那麼如何通過一連串的二進位制來完成計算器的計算功能呢?何為原碼反碼補碼?在了解底層加減法之前,先了解下原碼反碼與補碼的區別 整數分為正整數與負整數 怎樣根據二進位制設定乙個數是正數還是負數?根據首位符號 0表示為正數...
二進位制的減法
這裡需要說明的是,在計算機中做二進位制數運算時,一定要明確是在多少位的整型前提下進行的,這樣才能夠正確處理位數溢位的問題。其實減法也可以看成加法 6 4 無論加減法總結 補碼相加 結果再求補碼 1表示負 0表示正 在計算機中,負數是使用它的補碼來表示的。所謂補碼,就是反碼 1。所謂反碼,就是二進位制...