别的汇编语言,我不了解。Intel 8086/8088汇编语言编译器开始时所默认的整数进制为十进制。指令:MOV AX,25中的25,指十进制的25。
可以用进制伪指令RADIX来改变默认的进制。
伪指令RADIX用来设置整数的缺省进制,宏汇编开始时所默认的整数进制为十进制。该伪指令的使用格式如下:
.RADIX exp
其中:伪指令前面要用点‘.’开始,exp的值必须是区间[2, 16]内的一个整数。
该伪指令说明其下面整数的默认进制为exp。如果某整数已显式地表明了其进制,则该默认进制对其不起作用。在源文件中,可以使用多个RADIX伪指令来分别说明其后整数的默认进制,但为了避免引起不必要误会,我们不提倡这样去做。
例如:
.radix 8
B1 DB 10, 11, 12 ;这三个数是八进制数
DB 10D ;这数是十进制数,因为它已用'D'明确说明而不使用缺省进制
…
.radix 10
MOV AX, 1234 ;1234是十进制数
MOV AX, 1234H ;1234H是十六进制数
很明显,如果没有加H的话,这是默认为十进制的,编程要注意这个问题。
别的汇编语言,我不了解。Intel 8086/8088汇编语言编译器开始时所默认的整数进制为十进制。指令:MOV AX,25中的25,指十进制的25。
可以用进制伪指令RADIX来改变默认的进制。
伪指令RADIX用来设置整数的缺省进制,宏汇编开始时所默认的整数进制为十进制。该伪指令的使用格式如下:
.RADIX exp
其中:伪指令前面要用点‘.’开始,exp的值必须是区间[2, 16]内的一个整数。
该伪指令说明其下面整数的默认进制为exp。如果某整数已显式地表明了其进制,则该默认进制对其不起作用。在源文件中,可以使用多个RADIX伪指令来分别说明其后整数的默认进制,但为了避免引起不必要误会,我们不提倡这样去做。
例如:
.radix 8
B1 DB 10, 11, 12 ;这三个数是八进制数
DB 10D ;这数是十进制数,因为它已用'D'明确说明而不使用缺省进制
…
.radix 10
MOV AX, 1234 ;1234是十进制数
MOV AX, 1234H ;1234H是十六进制数
很明显,如果没有加H的话,这是默认为十进制的,编程要注意这个问题。
这两个数的加法,已经产生了进位。
这个进位,要当做256,最终结果是263:
10000010
+
10000100
+
1
-------------------
1
00000111
256
7
=
263
减法,就是借位的问题了,可以仿照上面分析计算。
你定义数据的时候把OPR1和OPR2定义成16位的数就可以了,由于无符号8位2进的表示范围是0道255,你的结果为260,超出了0到255的范围,所以产生溢出,OF位等于1。所以答案将会产生错误。SBB和ADC一样,都要考虑到CF位。