80x86 微处理器中的有符号数、字符串及表格操作
有符号数表示与运算
在 8086/88 中,有符号数通过使用最高有效位(MSB)作为符号位来表示。在字节操作数中,符号位是第 7 位;在字操作数中,符号位是第 15 位。符号位为 0 表示正数,为 1 表示负数,负数采用 2 的补码形式。
有符号数的加法和减法指令与无符号数相同,使用 ADD 和 SUB 指令。但有符号乘法和除法使用 IMUL 和 IDIV 指令,而非 MUL 和 DIV。在有符号数运算中,程序员必须检查溢出问题。当有进位进入 MSB,或者有进位输出但没有进位进入 MSB 时,就会发生溢出。可以使用符号扩展指令 CBW 和 CWD 来避免溢出问题。
下面是一个寻找最低温度的程序示例:
;FIND THE LOWEST TEMPERATURE
.MODEL SMALL
.STACK 64
.DATA
SIGN_DAT DB +13,-10,+19,+14,-18,-9,+12,-19,+16
ORG 0010H
LOWEST DB ?
.CODE
MAIN PROC FAR
MOV AX,@DATA
MOV DS,AX
MOV CX,S ;LOAD COUNTER (NUMBER ITEMS - 1)
MOV SI,OFFSET SIGN_DAT ;SET UP POINTER
MOV AL,[SI] ;AL HOLDS LOWEST VALUE FOUND SO FAR
BACK:
INC SI ;INCREMENT POINTER
CMP AL,[SI] ;COMPARE NEXT
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



