Advertisement
darthstygeon

M3A2 asm code

Mar 27th, 2022
1,119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. ;Program COMPARES.ASM: Compare two words of data different ways.
  2. ;
  3.         .MODEL SMALL
  4.         .DATA
  5. NUM1    DW    25000
  6. NUM2    DW    26000
  7. AXMSG   DB    'AX equals$'
  8. BXMSG   DB    'BX equals$'
  9. MSG     DB    ' '
  10. TENTHOS DB    ?
  11. THOUS   DB    ?
  12. HUNS    DB    ?
  13. TENS    DB    ?
  14. ONES    DB    ?
  15.         DB    0DH,0AH,'$'
  16. IMSG    DB    'Instruction: CMP AX,BX',13,10,'$'
  17. JCTMSG  DB    'JC is True',13,10,'$'
  18. JCFMSG  DB    'JC is False',13,10,'$'
  19. JZTMSG  DB    'JZ is True',13,10,'$'
  20. JZFMSG  DB    'JZ is False',13,10,'$'
  21. JATMSG  DB    'JA is True',13,10,'$'
  22. JAFMSG  DB    'JA is False',13,10,'$'
  23. JLTMSG  DB    'JL is True',13,10,'$'
  24. JLFMSG  DB    'JL is False',13,10,'$'
  25. JETMSG  DB    'JE is True',13,10,'$'
  26. JEFMSG  DB    'JE is False',13,10,'$'
  27. JPETMSG  DB    'JPE is True',13,10,'$'
  28. JPEFMSG  DB    'JPE is False',13,10,'$'
  29. JPOTMSG  DB    'JPO is True',13,10,'$'
  30. JPOFMSG  DB    'JPO is False',13,10,'$'
  31. JGTMSG  DB    'JG is True',13,10,'$'
  32. JGFMSG  DB    'JG is False',13,10,'$'
  33.         .CODE
  34.         .STARTUP
  35.         LEA   DX,AXMSG          ;display AX value
  36.         MOV   AH,9
  37.         INT   21H
  38.         MOV   AX,NUM1
  39.         CALL  BTOD
  40.         LEA   DX,MSG  
  41.         MOV   AH,9
  42.         INT   21H
  43.  
  44.         LEA   DX,BXMSG          ;display BX value
  45.         MOV   AH,9
  46.         INT   21H
  47.         MOV   AX,NUM2          
  48.         CALL  BTOD
  49.         LEA   DX,MSG  
  50.         MOV   AH,9
  51.         INT   21H
  52.  
  53.         LEA   DX,IMSG           ;show 'CMP AX,BX'
  54.         MOV   AH,9
  55.         INT   21H
  56.  
  57.         MOV   AX,NUM1           ;start the comparisons
  58.         MOV   BX,NUM2
  59.         CALL  DOJC
  60.         MOV   AX,NUM1
  61.         MOV   BX,NUM2
  62.         CALL  DOJZ
  63.         MOV   AX,NUM1
  64.         MOV   BX,NUM2
  65.         CALL  DOJA
  66.         MOV   AX,NUM1
  67.         MOV   BX,NUM2
  68.         CALL  DOJL
  69.         MOV   AX,NUM1
  70.         MOV   BX,NUM2
  71.         CALL  DOJE              ;1st intruction i added jump if equal
  72.         MOV   AX,NUM1
  73.         MOV   BX,NUM2
  74.         CALL  DOJPE             ;2nd instrction jump if even
  75.         MOV   AX,NUM1
  76.         MOV   BX,NUM2
  77.         CALL  DOJPO             ;3rd instruction jump if odd
  78.         MOV   AX,NUM1
  79.         MOV   BX,NUM2
  80.         CALL  DOJG              ;4th instruction jump if greater
  81.         .EXIT
  82.  
  83. DOJC    PROC  FAR
  84.         CMP   AX,BX
  85.         JC    JCOK
  86.         LEA   DX,JCFMSG
  87.         MOV   AH,9
  88.         INT   21H
  89.         RET
  90. JCOK:   LEA   DX,JCTMSG
  91.         MOV   AH,9
  92.         INT   21H
  93.         RET
  94. DOJC    ENDP
  95.  
  96. DOJZ    PROC  FAR
  97.         CMP   AX,BX
  98.         JZ    JZOK
  99.         LEA   DX,JZFMSG
  100.         MOV   AH,9
  101.         INT   21H
  102.         RET
  103. JZOK:   LEA   DX,JZTMSG
  104.         MOV   AH,9
  105.         INT   21H
  106.         RET
  107. DOJZ    ENDP
  108.  
  109. DOJA    PROC  FAR
  110.         CMP   AX,BX
  111.         JA    JAOK
  112.         LEA   DX,JAFMSG
  113.         MOV   AH,9
  114.         INT   21H
  115.         RET
  116. JAOK:   LEA   DX,JATMSG
  117.         MOV   AH,9
  118.         INT   21H
  119.         RET
  120. DOJA    ENDP
  121.  
  122. DOJL    PROC  FAR
  123.         CMP   AX,BX
  124.         JL    JLOK
  125.         LEA   DX,JLFMSG
  126.         MOV   AH,9
  127.         INT   21H
  128.         RET
  129. JLOK:   LEA   DX,JLTMSG
  130.         MOV   AH,9
  131.         INT   21H
  132.         RET
  133. DOJL    ENDP
  134.  
  135. DOJE    PROC  FAR
  136.         CMP   AX,BX
  137.         JE    JEOK
  138.         LEA   DX,JEFMSG
  139.         MOV   AH,9
  140.         INT   21H
  141.         RET
  142. JEOK:   LEA   DX,JETMSG
  143.         MOV   AH,9
  144.         INT   21H
  145.         RET
  146. DOJE    ENDP
  147.  
  148. DOJPE   PROC  FAR
  149.         CMP   AX,BX
  150.         JPE   JPEOK
  151.         LEA   DX,JPEFMSG
  152.         MOV   AH,9
  153.         INT   21H
  154.         RET
  155. JPEOK:  LEA   DX,JPETMSG
  156.         MOV   AH,9
  157.         INT   21H
  158.         RET
  159. DOJPE   ENDP
  160.  
  161. DOJPO   PROC  FAR
  162.         CMP   AX,BX
  163.         JPO   JPOOK
  164.         LEA   DX,JPOFMSG
  165.         MOV   AH,9
  166.         INT   21H
  167.         RET
  168. JPOOK:  LEA   DX,JPOTMSG
  169.         MOV   AH,9
  170.         INT   21H
  171.         RET
  172. DOJPO   ENDP
  173.  
  174. DOJG    PROC  FAR
  175.         CMP   AX,BX
  176.         JG    JGOK
  177.         LEA   DX,JGFMSG
  178.         MOV   AH,9
  179.         INT   21H
  180.         RET
  181. JGOK:   LEA   DX,JGTMSG
  182.         MOV   AH,9
  183.         INT   21H
  184.         RET
  185. DOJG    ENDP
  186.  
  187. BTOD    PROC  FAR
  188.         SUB   DX,DX
  189.         MOV   BX,10000
  190.         DIV   BX                ;get 10,000s digit
  191.         ADD   AL,30H
  192.         MOV   TENTHOS,AL
  193.         XCHG  AX,DX
  194.         SUB   DX,DX
  195.         MOV   BX,1000           ;get 1,000s digit
  196.         DIV   BX
  197.         ADD   AL,30H
  198.         MOV   THOUS,AL
  199.         XCHG  DX,AX
  200.         MOV   BL,100
  201.         DIV   BL          ;get hundreds digit
  202.         ADD   AL,30H      ;convert into ASCII digit
  203.         MOV   HUNS,AL     ;and save
  204.         XCHG  AL,AH       ;get remainder
  205.         SUB   AH,AH       ;prepare for division by 10
  206.         MOV   BL,10
  207.         DIV   BL          ;get tens digit
  208.         ADD   AL,30H      ;convert into ASCII digit
  209.         MOV   TENS,AL     ;and save
  210.         ADD   AH,30H      ;convert ones digit into ASCII
  211.         MOV   ONES,AH     ;and save
  212.         RET
  213. BTOD    ENDP
  214.  
  215.         END
  216.  
  217.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement