Merge branch 'main' of https://strade-fs.fit.vutbr.cz/git/orsag/isu-examples into main
This commit is contained in:
commit
d6c9bcb9e0
221
t11.asm
221
t11.asm
@ -1,221 +0,0 @@
|
||||
%include 'rw32-2022.inc'
|
||||
|
||||
section .data
|
||||
; 1 + 4 + 2 + 2 + 2 + 4 + 4= 19
|
||||
currentTest dd 0
|
||||
TEST_REC_SIZE EQU 19
|
||||
testCount dd 11
|
||||
tests:
|
||||
t1 db 10
|
||||
dd 20
|
||||
dw 10
|
||||
dw 7
|
||||
dw 7
|
||||
dd 0
|
||||
dd 0
|
||||
t2 db 0
|
||||
dd 0
|
||||
dw 0
|
||||
dw 0
|
||||
dw 0
|
||||
dd 0
|
||||
dd 0
|
||||
t3 db 0xFF
|
||||
dd 0x0000FFFF
|
||||
dw 0xFFFF
|
||||
dw 0xFFFF
|
||||
dw 0xFFFF
|
||||
dd 0
|
||||
dd 0
|
||||
t4 db 0x80
|
||||
dd 0x00008000
|
||||
dw 0x8000
|
||||
dw 0x8000
|
||||
dw 0x8000
|
||||
dd 0
|
||||
dd 0
|
||||
t5 db 0x7F
|
||||
dd 0x00007FFF
|
||||
dw 0x7FFF
|
||||
dw 0x7FFF
|
||||
dw 0x7FFF
|
||||
dd 0
|
||||
dd 0
|
||||
t6 db 0x7F
|
||||
dd 0x7FFFFFFF
|
||||
dw 0x7FFF
|
||||
dw 0x7FFF
|
||||
dw 0x7FFF
|
||||
dd 0
|
||||
dd 0
|
||||
t7 db 0x80
|
||||
dd 0x80000000
|
||||
dw 0x8000
|
||||
dw 0x8000
|
||||
dw 0x8000
|
||||
dd 0
|
||||
dd 0
|
||||
t8 db 0xFF
|
||||
dd 0xFFFFFFFF
|
||||
dw 0xFFFF
|
||||
dw 0xFFFF
|
||||
dw 0xFFFF
|
||||
dd 0
|
||||
dd 0
|
||||
t9 db 10
|
||||
dd 20
|
||||
dw 10
|
||||
dw 7
|
||||
dw 7
|
||||
dd 0xFFFFFFFF
|
||||
dd 0xFFFFFFFF
|
||||
t10 db 10
|
||||
dd 20
|
||||
dw 10
|
||||
dw 7
|
||||
dw 7
|
||||
dd 0x7FFFFFFF
|
||||
dd 0x7FFFFFFF
|
||||
t11 db 10
|
||||
dd 20
|
||||
dw 10
|
||||
dw 7
|
||||
dw 7
|
||||
dd 0x80000000
|
||||
dd 0x80000000
|
||||
|
||||
a db 0
|
||||
b dd 0
|
||||
c dw 0
|
||||
d dw 0
|
||||
e dw 0
|
||||
q dd 0
|
||||
r dd 0
|
||||
|
||||
section .text
|
||||
PRINT_ABCDE:
|
||||
mov al,'('
|
||||
call WriteChar
|
||||
mov al,[a]
|
||||
call WriteUInt8
|
||||
mov al,','
|
||||
call WriteChar
|
||||
mov eax,[b]
|
||||
call WriteUInt32
|
||||
mov al,','
|
||||
call WriteChar
|
||||
mov ax,[c]
|
||||
call WriteUInt16
|
||||
mov al,','
|
||||
call WriteChar
|
||||
mov ax,[d]
|
||||
call WriteUInt16
|
||||
mov al,','
|
||||
call WriteChar
|
||||
mov ax,[e]
|
||||
call WriteUInt16
|
||||
mov al,')'
|
||||
call WriteChar
|
||||
mov al,'='
|
||||
call WriteChar
|
||||
ret
|
||||
|
||||
CMAIN:
|
||||
enter 0,0
|
||||
pushad
|
||||
pushfd
|
||||
|
||||
mov eax,3
|
||||
jmp .skip_pars
|
||||
mov eax,[ebp+8] ; argc
|
||||
cmp eax,2
|
||||
jb exit
|
||||
|
||||
mov esi,[ebp+12] ; argv
|
||||
mov edi,[esi] ; argv[0]
|
||||
CEXTERN atoi
|
||||
push dword [esi+4]
|
||||
call atoi
|
||||
add esp,4
|
||||
cmp eax,1
|
||||
jb exit
|
||||
cmp eax,[testCount]
|
||||
ja exit
|
||||
|
||||
mov ebx,-1
|
||||
mov ecx,-1
|
||||
mov edx,-1
|
||||
mov esi,-1
|
||||
mov edi,-1
|
||||
mov ebp,-1
|
||||
.skip_pars:
|
||||
imul eax,eax,TEST_REC_SIZE
|
||||
lea esi,[tests + eax - TEST_REC_SIZE]
|
||||
mov [currentTest],esi
|
||||
mov edi,a
|
||||
mov ecx,TEST_REC_SIZE
|
||||
cld
|
||||
rep movsb
|
||||
|
||||
call PRINT_ABCDE
|
||||
|
||||
mov dword [q],0xABABABAB
|
||||
mov dword [r],0xBABABABA
|
||||
mov eax,[currentTest + 11]
|
||||
mov edx,[currentTest + 15]
|
||||
mov esi,0
|
||||
call task12
|
||||
mov esi,q
|
||||
mov ecx,2
|
||||
call WriteArrayUInt32
|
||||
|
||||
exit:
|
||||
popfd
|
||||
popad
|
||||
leave
|
||||
xor eax,eax
|
||||
ret
|
||||
user_test_code_begin:
|
||||
task12:
|
||||
xor eax, eax
|
||||
xor ebx, ebx
|
||||
xor edx, edx
|
||||
xor ecx, ecx
|
||||
mov al, byte [a]
|
||||
cbw
|
||||
cwde
|
||||
imul dword [b]
|
||||
mov ebx, eax
|
||||
xor eax, eax
|
||||
mov ax, word [c]
|
||||
cwde
|
||||
add eax, ebx
|
||||
add eax, 32
|
||||
mov ecx,eax
|
||||
|
||||
xor eax, eax
|
||||
xor ebx, ebx
|
||||
xor edx, edx
|
||||
mov ax, 5
|
||||
mov bx, word [d]
|
||||
imul bx
|
||||
shl edx, 16
|
||||
mov dx, ax
|
||||
mov eax, edx
|
||||
mov ebx, eax
|
||||
xor eax, eax
|
||||
mov ax, word [e]
|
||||
cwde
|
||||
add eax, ebx
|
||||
mov ebx, 1256
|
||||
add eax, ebx
|
||||
|
||||
xchg eax, ecx
|
||||
cdq
|
||||
idiv ecx
|
||||
mov [q], eax
|
||||
mov [r], edx
|
||||
ret
|
||||
|
||||
user_test_code_end:
|
||||
ret
|
||||
Loading…
Reference in New Issue
Block a user