Как нужно объявить переменную, чтобы число было знаковым - Assembler
Формулировка задачи:
Написал часть часть кода, которое считает выражение, проблема в том, что если x = -1 (как в коде) неправильный результат так как x = 65535. Как нужно объявить переменную, чтобы число было знаковым?
.386 .model flat, stdcall option casemap :none include windows.inc include kernel32.inc include user32.inc includelib kernel32.lib includelib user32.lib .data x dw -1 y dw 0 .code main proc xor edx, edx mov ax, x mov y, 1 add y, ax imul ax, ax add y, ax imul ax, x idiv b add y, ax invoke ExitProcess, 0 main endp end main
Решение задачи: «Как нужно объявить переменную, чтобы число было знаковым»
textual
Листинг программы
.data b dw 3 x dw -1 y dw ? .code main proc mov y, 1 mov ax, x add y, ax imul ax add y, ax imul x idiv b add y, ax
Объяснение кода листинга программы
- Объявление переменных: — b — целочисленная переменная, содержащая значение 3; — x — целочисленная переменная, содержащая отрицательное значение 1; — y — целочисленная переменная, содержащая неявно начальное значение 0.
- Код программы: — main proc — метка процедуры, соответствующей функции main(); — mov y, 1 — пересылка в переменную y значения 1; — mov ax, x — пересылка в регистр ax значения переменной x; — add y, ax — прибавление к значению переменной y значения, содержащегося в регистре ax; — imul ax — умножение значения переменной y на значение, содержащееся в регистре ax; — idiv b — деление значения переменной y на значение переменной b.