2016-02-08 4 views
0

Format MZ CODE entrée: STARTcomment inclure la soustraction, multiplier et diviser dans mon code dans 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 : $" 

SEGMENT CODE 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

S'il vous plaît mettre en forme le code correctement et peut-être ajouter une question aussi? –

Répondre

0

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

soustraction:

sub al,1 

soustrait l'opérande source de l'opérande de destination et remplace l'opérande de destination par le résultat. Si un emprunt est requis, les FC sont fixées. Les règles pour les opérandes sont les mêmes que pour l'instruction add.

se multiplient:

mul bx 

mul effectue une multiplication non signée de l'opérande et l'accumulateur. Si l'opérande est un octet, le processeur le multiplie par le contenu de al et renvoie le résultat 16 bits à ah et al. Si l'opérande est un mot, le processeur le multiplie par le contenu de ax et renvoie le résultat 32 bits à dx et ax. Si l'opérande est un double mot, le processeur le multiplie par le contenu de eax et renvoie le résultat 64 bits dans edx et eax. mul définit CF et OF lorsque la moitié supérieure du résultat est différente de zéro, sinon sont effacées.

fracture:

div bx 

div effectue une division non signée de l'accumulateur par l'opérande. Le dividende (l'accumulateur) est deux fois la taille du diviseur (l'opérande), le quotient et le reste ont la même taille que le diviseur. Si le diviseur est octet, le dividende est tiré du registre ax , le quotient est stocké dans al et le reste est stocké dans ah. Si diviseur est mot, la moitié supérieure du dividende est prise à partir de dx, la moitié inférieure du dividende est prise de ax, le quotient est stocké dans ax et le reste est stocké dans dx. Si le diviseur est double mot, la moitié supérieure du dividende est tirée d'edx, la moitié inférieure du dividende est tirée de eax, le quotient est stocké dans eax et le reste est stocké dans edx. Les règles pour l'opérande sont les mêmes que pour l'instruction mul.