Advertisement
Guest User

Untitled

a guest
Mar 20th, 2019
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.25 KB | None | 0 0
  1. #----------------------------------------------------------------
  2. # Program lab_2.s - Asemblery Laboratorium IS II rok
  3. #----------------------------------------------------------------
  4. #
  5. # To compile: as -o lab_2.o lab_2.s
  6. # To link: ld -o lab_2 lab_2.o
  7. # To run: ./lab_2
  8. #
  9. #----------------------------------------------------------------
  10.  
  11. .equ write_64, 1 #write data to file function
  12. .equ exit_64, 60 #exit program function
  13. .equ stdout, 1 #handle to stdout
  14.  
  15. .data
  16.  
  17. arg1txt:
  18. .ascii "Arg1 = "
  19. arg2txt:
  20. .ascii "Arg2 = "
  21. sumtxt:
  22. .ascii "Sum = "
  23. difftxt:
  24. .ascii "Diff = "
  25. ortxt:
  26. .ascii "OR = "
  27. andtxt:
  28. .ascii "AND = "
  29. xortxt:
  30. .ascii "XOR = "
  31. arg1: #first argument
  32. .byte 0xA0
  33. arg2: #second argument
  34. .byte 0x05
  35. result: #result
  36. .byte 0
  37. tmp:
  38. .byte 0
  39. restxt:
  40. .ascii " \n"
  41. txtlen:
  42. .quad 7
  43. reslen:
  44. .quad 3
  45.  
  46. .text
  47. .global _start
  48.  
  49. _start:
  50. NOP
  51.  
  52. MOVB arg1,%al
  53. MOV $arg1txt,%rsi
  54. CALL disp_line
  55.  
  56. NOP
  57.  
  58. MOVB arg2,%al
  59. MOV $arg2txt,%rsi
  60. CALL disp_line
  61.  
  62. NOP
  63.  
  64. MOVB arg1,%al
  65. ADDB arg2,%al
  66. MOVB %al,result
  67. MOV $sumtxt,%rsi
  68. CALL disp_line
  69.  
  70. NOP
  71.  
  72. MOVB arg1,%al
  73. SUBB arg2,%al
  74. MOVB %al,result
  75. MOV $difftxt,%rsi
  76. CALL disp_line
  77.  
  78. NOP
  79.  
  80. MOVB arg1,%al
  81. ORB arg2,%al
  82. MOVB %al,result
  83. MOV $ortxt,%rsi
  84. CALL disp_line
  85.  
  86. NOP
  87.  
  88. MOVB arg1,%al
  89. ANDB arg2,%al
  90. MOVB %al,result
  91. MOV $andtxt,%rsi
  92. CALL disp_line
  93.  
  94. NOP
  95.  
  96. MOVB arg1,%al
  97. XORB arg2,%al
  98. MOVB %al,result
  99. MOV $xortxt,%rsi
  100. CALL disp_line
  101.  
  102. NOP
  103.  
  104. MOV $exit_64,%rax
  105. XOR %rdi,%rdi
  106. SYSCALL
  107.  
  108. #----------------------------------------------------------------
  109. # disp_line - displays line of text (prompt + hexadecimal number)
  110. #----------------------------------------------------------------
  111.  
  112. .type disp_line,@function
  113.  
  114. disp_line:
  115. MOVB %al,tmp
  116.  
  117. MOV $write_64,%rax
  118. MOV $stdout,%rdi
  119. MOV txtlen,%rdx
  120. SYSCALL
  121.  
  122. MOVB tmp,%al
  123. ANDB $0x0F,%al
  124. CMPB $10,%al
  125. JB digit1
  126. ADDB $('A'-10),%al
  127. JMP insert1
  128. digit1:
  129. ADDB $'0',%al
  130. insert1:
  131. MOV %al,%ah
  132.  
  133. MOVB tmp,%al
  134. SHR $4,%al
  135. CMPB $10,%al
  136. JB digit2
  137. ADDB $('A'-10),%al
  138. JMP insert2
  139. digit2:
  140. ADDB $'0',%al
  141. insert2:
  142. MOVW %ax,restxt
  143.  
  144. MOV $write_64,%rax
  145. MOV $stdout,%rdi
  146. MOV $restxt,%rsi
  147. MOV reslen,%rdx
  148. SYSCALL
  149.  
  150. RET
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement