【发布时间】:2013-09-29 20:10:34
【问题描述】:
我必须编写一个汇编程序来计算 (a * (bc) * d) 其中 a, b, c, d 是以有符号 8 位格式存储在数据段中的变量。 (我必须假设结果表示为带符号的 32 位数字)
我写了以下代码
data segment
a db 1
b db 9
c db 3
d db 4
x dw ?
ends
stack segment
dw 128 dup(0)
ends
code segment
start:
mov ax, data
mov ds, ax
mov es, ax
; what would the difference be in the following three lines if the variables where signed?
mov al, b
sub al,c
mul a
mul d
;treating result as a 16bit - how about signed?
mov x,ax
mov ax, 4c00h ; exit to operating system.
int 21h
ends
end start
我的问题如下: 除了注册表大小(al,ah,bh,bl,ecc ... 8bit),(ax,bx,cd,dx,16bit)之外,在将数字视为有符号和无符号时,我需要知道哪些区别?
除了将它存储到 DW 变量之外,我如何区别对待 32 位变量和 16 位变量?
为方便起见,我在代码的相关部分中编写了上述问题的简短版本。
有人可以帮帮我吗? 提前感谢您的宝贵时间。
【问题讨论】:
标签: assembly x86 unsigned signed