2016-02-08 5 views
0
формат

MZ CODE запись: STARTКак включить вычитание, умножить и разделить мой код в FASM?

SEGMENT dDATA 
NUM1 DB ? 
NUM2 DB ? 
RESULT DB ? 
MSG1 DB 10,13,"ENTER FIRST NUMBER TO ADD : $" 
MSG2 DB 10,13,"ENTER SECOND NUMBER TO ADD : $" 
MSG3 DB 10,13,"RESULT OF ADDITION IS : $" 

СЕГМЕНТ КОД START:

MOV AX, dDATA 
    MOV DS,AX 

    LEA DX, [MSG1] 
    MOV AH,9 
    INT 21H 

    MOV AH,1 
    INT 21H 
    SUB AL,30H 
    MOV [NUM1], AL 

    LEA DX, [MSG2] 
    MOV AH,9 
    INT 21H 

    MOV AH,1 
    INT 21H 
    SUB AL,30H 
    MOV [NUM2] ,AL 

    ADD AL, [NUM1] 

    MOV [RESULT], AL 

    MOV AH,0 
    AAA 

    ADD AH,30H 
    ADD AL,30H 

    MOV BX,AX 

    LEA DX, [MSG3] 
    MOV AH,9 
    INT 21H 

    MOV AH,2 
    MOV DL,BH 
    INT 21H 

    MOV AH,2 
    MOV DL,BL 
    INT 21H 

    MOV AH,4CH 
    INT 21H 
+1

Пожалуйста, правильно скопируйте код и добавьте вопрос также? –

ответ

0

https://www.pdf-archive.com/2016/11/25/fasm/

вычитанием:

sub al,1 

sub вычитает исходный операнд из операнда-адресата и заменяет операнд назначения результатом. Если требуется заимствование, CF устанавливается. Правила для операнды такие же, как для команды add.

размножишься

mul bx 

мул выполняет умножение без знака операнда и аккумулятора. Если операнд является байтом, процессор умножает его на содержимое al и возвращает 16-разрядный результат в ah и al. Если операндом является слово, процессор умножает его на содержимое топора и возвращает 32-битный результат на dx и ax. Если операнд является двойным словом, процессор умножает его на содержимое eax и возвращает 64-разрядный результат в edx и eax. mul устанавливает CF и OF, когда верхняя половина результата отлична от нуля, в противном случае очищаются .

разрыв:

div bx 

ДИВ выполняет беззнаковое деление аккумулятора на операнд. Дифференциал (аккумулятор) в два раза больше размера делителя (операнда), коэффициент и остаток имеют тот же размер, что и делитель. Если делитель является байтом, то дивиденд берется из регистра ax, коэффициент сохраняется в al, а остаток хранится в ah. Если делителем является слово , верхняя половина дивиденда берется из dx, принимается нижняя половина дивиденда от топора, фактор хранится в топе, а остаток хранится в dx. Если делителем является двойное слово, верхняя половина дивиденда берется из edx, нижняя половина дивиденда равна , взятая из eax, фактор хранится в eax, а остаток хранится в edx. Правила для операнда такие же, как для команды mul.