codingOL

[ARCHORG] MP1 display??

Dec 7th, 2011
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. BITS 32
  2. GLOBAL _asm_main
  3. EXTERN _printf
  4.  
  5. SECTION .data
  6. row1 dd 5,7,3,1
  7. row2 dd 10,2,8,7
  8. row3 dd 1,4,2,5
  9. row4 dd 9,1,8,6
  10. matrixB dd 4,9,3,1
  11. inimsgA db "A =", 10, 0
  12. inimsgB db "B =", 10, 0
  13. resmsgC db "Result =", 10, 0
  14. fmtmsg  db "%d %d %d %d", 10, 0
  15. ;ctr1     db 4
  16. ;ctr2     db 4
  17.  
  18. SECTION .bss
  19. ;matrixC resd 4
  20. ;timestamp resb 16
  21.  
  22. SECTION .text
  23. _asm_main:
  24.     ENTER 0,0
  25.    
  26.     PUSH EBX
  27.    
  28.     ; ReaD TimeStamp Counter
  29.    
  30.     ;RDTSC
  31.    
  32.     ; Save initial timestamp
  33.    
  34.     ;MOV [timestamp], EAX
  35.     ;MOV [timestamp+8], EDX
  36.    
  37.     ; push EAX and EDX to stack
  38.    
  39.     ;PUSH EAX
  40.     ;PUSH EDX
  41.    
  42.     ; Do the code now
  43.     ; [START]
  44.    
  45.    
  46.     print_matrixA_msg:
  47.         PUSH inimsgA        ; push message label "A =" to the stack
  48.         CALL _printf        ; call external printf
  49.         ADD ESP,4           ; pop stack 4*1 bytes
  50.     print_matrixA_rowA:    
  51.         MOV EBX, [row1+12]  ; load element into EBX
  52.         PUSH EBX            ; push element
  53.         MOV EBX, [row1+8]
  54.         PUSH EBX
  55.         MOV EBX, [row1+4]
  56.         PUSH EBX
  57.         MOV EBX, [row1]
  58.         PUSH EBX
  59.         PUSH fmtmsg         ; push the format to display the row
  60.         CALL _printf        ; call external printf
  61.         ADD ESP,20          ; pop stack 4*5 bytes
  62.     print_matrixA_rowB:
  63.         MOV EBX, [row2+12]  ; load element into EBX
  64.         PUSH EBX            ; push element
  65.         MOV EBX, [row2+8]
  66.         PUSH EBX
  67.         MOV EBX, [row2+4]
  68.         PUSH EBX
  69.         MOV EBX, [row2]
  70.         PUSH EBX
  71.         PUSH fmtmsg         ; push the format to display the row
  72.         CALL _printf        ; call external printf
  73.         ADD ESP,20          ; pop stack 4*5 bytes
  74.     print_matrixA_rowC:
  75.         MOV EBX, [row3+12]  ; load element into EBX
  76.         PUSH EBX            ; push element
  77.         MOV EBX, [row3+8]
  78.         PUSH EBX
  79.         MOV EBX, [row3+4]
  80.         PUSH EBX
  81.         MOV EBX, [row3]
  82.         PUSH EBX
  83.         PUSH fmtmsg         ; push the format to display the row
  84.         CALL _printf        ; call external printf
  85.         ADD ESP,20          ; pop stack 4*5 bytes
  86.     print_matrixA_rowD:
  87.         MOV EBX, [row4+12]  ; load element into EBX
  88.         PUSH EBX            ; push element
  89.         MOV EBX, [row4+8]
  90.         PUSH EBX
  91.         MOV EBX, [row4+4]
  92.         PUSH EBX
  93.         MOV EBX, [row4]
  94.         PUSH EBX
  95.         PUSH fmtmsg         ; push the format to display the row
  96.         CALL _printf        ; call external printf
  97.         ADD ESP,20          ; pop stack 4*5 bytes
  98.     print_matrixB_msg:
  99.         PUSH inimsgB        ; push message label "B =" to the stack
  100.         CALL _printf        ; call external printf
  101.         ADD ESP,4           ; pop stack 4*1 bytes
  102.     print_matrixB:
  103.         MOV EBX, [matrixB+12]   ; load element into EBX
  104.         PUSH EBX            ; push element
  105.         MOV EBX, [matrixB+8]
  106.         PUSH EBX
  107.         MOV EBX, [matrixB+4]
  108.         PUSH EBX
  109.         MOV EBX, [matrixB]
  110.         PUSH EBX
  111.         PUSH fmtmsg         ; push the format to display the row
  112.         CALL _printf        ; call external printf
  113.         ADD ESP,20          ; pop stack 4*1 bytes
  114.     print_matrixC_msg:
  115.         PUSH resmsgC        ; push message label "Result =" to the stack
  116.         CALL _printf        ; call external printf
  117.         ADD ESP, 4          ; pop stack 4*1 bytes
  118.    
  119.     ; [END]
  120.     ;
  121.    
  122.     ; pop EAX and EDX from stack
  123.    
  124.     ;POP EAX
  125.     ;POP EDX
  126.    
  127.     ; get difference of two timestamps
  128.     ;SUB EAX, [timestamp]
  129.     ;SUB EDX, [timestamp + 8]
  130.    
  131.    
  132.     LEAVE
  133.     RET
  134.    
  135.  
Advertisement
Add Comment
Please, Sign In to add comment