Как нужно объявить переменную, чтобы число было знаковым - 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

Объяснение кода листинга программы

  1. Объявление переменных: — b — целочисленная переменная, содержащая значение 3; — x — целочисленная переменная, содержащая отрицательное значение 1; — y — целочисленная переменная, содержащая неявно начальное значение 0.
  2. Код программы: — 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.

Оцени полезность:

8   голосов , оценка 4.25 из 5
Похожие ответы