Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. INCLUDE "MACROS.TXT"
  2.  
  3. STACK SEGMENT
  4. X0 DW 0
  5. Y0 DW 0
  6. X1 DW 0
  7. Y1 DW 0
  8. STACK ENDS
  9.  
  10. DATA SEGMENT
  11. MS1 DB "1st number:",'$'
  12. MS2 DB "2nd number:",'$'
  13. MS3 DB "Result:",'$'
  14. MS4 DB 0AH,0DH,'$'
  15. DATA ENDS
  16.  
  17. CODE SEGMENT
  18. ASSUME CS:CODE, DS:DATA, SS:STACK
  19.  
  20. PRINT_HEX PROC NEAR
  21. CMP DH, 9 ;Elegxoume an einai noumero
  22. JG ADDRS1 ;An oxi einai gramma
  23. ADD DH, 30H ;An nai, prosthetoume to 30h
  24. JMP ADDRS2
  25. ADDRS1:
  26. ADD DH, 37H ;An einai gramma prosthetoume to 37h
  27. ADDRS2:
  28. PRINT DH ;Tipwnoume
  29. RET
  30. PRINT_HEX ENDP
  31.  
  32. PRINT_HEX1 PROC NEAR ;Tiponoume to periexomeno tou DH
  33. AND DH,0F0H ;ana 4 bit
  34. RCR DH, 4
  35. CALL PRINT_HEX
  36. MOV DX, X0
  37. AND DH, 0FH
  38. CALL PRINT_HEX
  39. MOV DX,X0
  40. SAL DX,8
  41. AND DH,0F0H
  42. RCR DH,4
  43. CALL PRINT_HEX
  44. MOV DX,X0
  45. SAL DX,8
  46. AND DH, 0FH
  47. CALL PRINT_HEX
  48. RET
  49. PRINT_HEX1 ENDP
  50.  
  51. READ_4B PROC NEAR ;Routina gia na diavazei 4 byte
  52. MOV CX,4
  53. MOV BX,0
  54. READ1:
  55. SAL BX,4
  56. CALL HEX_KEYB
  57. MOV AH,0
  58. ADD BX,AX
  59. LOOP READ1
  60. RET
  61. READ_4B ENDP
  62.  
  63. HEX_KEYB PROC NEAR ;Routina gia anagnwsi enos hex psifiou
  64. PUSH DX
  65. IGNORE:
  66. READ
  67. CMP AL,30H ;Elegxos ean einai egkyro noumero
  68. JL IGNORE
  69. CMP AL,39H
  70. JG ADDR1
  71. PUSH AX
  72. PRINT AL ;Ean einai, to emfanizoume stin othoni
  73. POP AX
  74. SUB AX,30H ;kai to metatrepoume apo ASCII
  75. JMP ADDR2
  76. ADDR1:
  77. CMP AL,'A' ;Elegxos ean einai egkyro gramma
  78. JL IGNORE
  79. CMP AL,'F'
  80. JG IGNORE ;Ean oxi, to agnooume
  81. PUSH AX
  82. PRINT AL ;Emfanisi
  83. POP AX
  84. SUB AX,37H ;Metatropi apo ASCII
  85. ADDR2:
  86. POP DX
  87. RET
  88. HEX_KEYB ENDP
  89.  
  90. MAIN PROC FAR
  91. MOV AX,DATA
  92. MOV DS,AX
  93. START:
  94. PRINT_STR MS1
  95. CALL READ_4B ;Diavazoume ta prwta 4 bytes
  96. MOV X1,BX ;ta apothikeuoume sti stoiva
  97. CALL READ_4B ;kai antistoixa ta epomena 4
  98. MOV X0,BX
  99. PRINT_STR MS4
  100. PRINT_STR MS2
  101. CALL READ_4B ;Kanoume ta idia kai gia to deutero
  102. MOV Y1,BX ;noumero
  103. CALL READ_4B
  104. MOV Y0,BX
  105. PRINT_STR MS4
  106. PRINT_STR MS3
  107. MULT1:
  108. MOV AX,X0 ;X0 x Y0
  109. MUL Y0
  110. MOV BX,DX ;ston BX vazoume tin MSW
  111. MOV CX,AX ;kai ston CX ti LSW
  112. MULT2:
  113. MOV AX,X0 ;X0 x Y1
  114. MUL Y1
  115. ADD BX,AX ;prosthetoume tin LSW stin proigoumeni MSW
  116. MOV X0,DX ;apothikeuoume tin MSW
  117. MULT3:
  118. MOV AX,X1 ;X1 x Y0
  119. MUL Y0
  120. ADD AX,BX ;prosthetoume tin LSW stin proigoumeni
  121. MOV BX,AX
  122. ADC DX,X0 ;to idio me tis MSW
  123. MOV X0,DX
  124. MULT4:
  125. MOV AX,X1 ;X1 x Y1
  126. MUL Y1
  127. ADD AX,X0 ;prosthetw tin LSW stis MSW apo prin
  128. ADC DX,0
  129. MOV X0,DX
  130. PUSH AX
  131. MOV DX, X0
  132. AND DH, 0FH
  133. CALL PRINT_HEX
  134. MOV DX,X0
  135. SAL DX,8
  136. AND DH,0F0H
  137. RCR DH,4
  138. CALL PRINT_HEX
  139. MOV DX,X0
  140. SAL DX,8
  141. AND DH, 0FH
  142. CALL PRINT_HEX
  143. POP AX
  144. MOV X0,AX
  145. MOV DX,X0
  146. CALL PRINT_HEX1
  147. MOV X0,BX
  148. MOV DX,X0
  149. CALL PRINT_HEX1
  150. MOV X0,CX
  151. MOV DX,X0
  152. CALL PRINT_HEX1
  153. PRINT_STR MS4
  154. EXIT
  155. CODE ENDS
  156. END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement