本帖最后由 Kxuan163 于 2020-12-26 00:39 編輯
8位有符號二進制整數原碼,最高位D7是符號位(0表示正數,1表示負數),
其余低7位是數值位,正數的補碼與原碼相同,負數的補碼將原碼尾數取反加1得到。
51匯編語言子程序如下:
;;入口:8位有符號二進制整數原碼存于R2,
;;返回:求得補碼仍存于R2。
CMPT: MOV A, R2 ;A←原碼
RLC A ;C←原碼的符號位
JNC Positive ;若符號位為零,是正數,直接返回
Negative: MOV A, R2 ;A←原碼
CPL A ;取反
INC A ;加1
ORL A,#10000000B ;恢復符號位
MOV R2,A ;R2←結果
Positive: NOP
RET
|