Advertisement
Guest User

Untitled

a guest
Feb 21st, 2017
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.50 KB | None | 0 0
  1.  
  2. ; You may customize this and other start-up templates;
  3. ; The location of this template is c:\emu8086\inc\0_com_template.txt
  4.  
  5. org 100h
  6.  
  7. .MODEL SMALL
  8. .STACK 1000
  9. .DATA
  10.  
  11. MSGA DB 13,10,"Input first number: ","$"
  12. MSGB DB 13,10,"Input second number:","$"
  13. MSGC DB 13,10,"The sum is: ","$"
  14.  
  15. NUM1 db ?
  16. NUM2 db ?
  17. NUM3 db ?
  18.  
  19. .CODE
  20.  
  21. MAIN PROC NEAR
  22.  
  23. MOV AX, @DATA
  24. MOV DS, AX
  25.  
  26. ; get first number
  27. LEA DX, MSGA
  28. MOV AH, 09h
  29. INT 21h
  30.  
  31. MOV AH, 01
  32. INT 21H
  33. SUB AL, '0'
  34.  
  35. MOV BL, AL
  36.  
  37. MOV AH, 01
  38. INT 21H
  39. SUB AL, '0'
  40.  
  41. MOV CL, AL
  42.  
  43. ; get second number
  44. LEA DX, MSGB
  45. MOV AH, 09h
  46. INT 21h
  47.  
  48. MOV AH, 01
  49. INT 21H
  50. SUB AL, '0'
  51.  
  52. MOV DL, AL
  53.  
  54. MOV AH, 01
  55. INT 21H
  56. SUB AL, '0'
  57.  
  58. MOV DH, AL
  59.  
  60. ; add
  61. MOV AL, CL
  62. MOV AH, BL
  63. ADD AL, DH
  64. AAA
  65. ADD AH, DL
  66.  
  67. MOV NUM1, AL
  68. ADD NUM1, '0'
  69.  
  70. ; if tens digit is less than or equal to 9
  71. CMP AH, 9
  72. JLE NOT_3DIGIT
  73.  
  74. IS_3DIGIT:
  75. MOV AL, AH ; move value of ah to al
  76. SUB AH, AH ; clear ah
  77. ADD AL, 0 ; al + 0 = al (tens digit)
  78. AAA ; move for addition
  79. ADD AH, 0 ; ah + 0 + 1 = ah + 1 (hundreds digit)
  80. MOV NUM2, AL
  81. MOV NUM3, AH
  82. ADD NUM2, '0'
  83. ADD NUM3, '0'
  84. ; output sum
  85. LEA DX, MSGC
  86. MOV AH, 09h
  87. INT 21h
  88. MOV DL, NUM3
  89. MOV AH, 02H
  90. INT 21h
  91. MOV DL, NUM2
  92. MOV AH, 02H
  93. INT 21h
  94. JMP PRINT_LASTDIGIT
  95.  
  96.  
  97. NOT_3DIGIT:
  98. MOV NUM2, AH
  99. ADD NUM2, '0'
  100. ; output sum
  101. LEA DX, MSGC
  102. MOV AH, 09h
  103. INT 21h
  104. MOV DL, NUM2
  105. MOV AH, 02H
  106. INT 21h
  107.  
  108. PRINT_LASTDIGIT:
  109. MOV DL, NUM1
  110. MOV AH, 02H
  111. INT 21h
  112.  
  113. EXIT:
  114. MOV AH, 4Ch
  115. INT 21h
  116.  
  117. MAIN ENDP
  118. END MAIN
  119.  
  120. ret
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement