Мне нужно написать программу сборки, которая вычисляет (a * (bc) * d), где a, b, c, d являются переменными, хранящимися в сегменте данных в подписанном 8 -битный формат. (я должен предположить, что результат представлен в виде подписанного 32-разрядного числа)x86 Ассемблер Asm. Разница между подписанной и неподписанной - и переменной 8 и 16
Я написал следующий код
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)?
Как обрабатывать 32-битную переменную, отличную от переменной 16, кроме сохранения ее переменной DW?
Для вашего удобства я написал короткую версию вышеперечисленных вопросов в соответствующих частях кода.
Может кто-нибудь, пожалуйста, помогите мне, пожалуйста? Заранее благодарим за ваше время.