section .data
a db 9
b db 3
msg1 db "9 + 3 = "
len1 equ $-msg1
msg2 db 10,"9 - 3 = "
len2 equ $-msg2
msg3 db 10,"9 * 3 = "
len3 equ $-msg3
msg4 db 10,"9 / 3 = "
len4 equ $-msg4
section .bss
result resb 2
section .text
global _start
_start:
;=========================
; Tong
;=========================
mov eax,4
mov ebx,1
mov ecx,msg1
mov edx,len1
int 0x80
mov al,[a]
add al,[b] ; 12
aam ; AH=1 AL=2
add ax,3030h
mov [result],ah
mov [result+1],al
mov eax,4
mov ebx,1
mov ecx,result
mov edx,2
int 0x80
;=========================
; Hieu
;=========================
mov eax,4
mov ebx,1
mov ecx,msg2
mov edx,len2
int 0x80
mov al,[a]
sub al,[b]
add al,'0'
mov [result],al
mov eax,4
mov ebx,1
mov ecx,result
mov edx,1
int 0x80
;=========================
; Tich
;=========================
mov eax,4
mov ebx,1
mov ecx,msg3
mov edx,len3
int 0x80
mov al,[a]
mul byte [b] ; 27
aam
add ax,3030h
mov [result],ah
mov [result+1],al
mov eax,4
mov ebx,1
mov ecx,result
mov edx,2
int 0x80
;=========================
; Thuong
;=========================
mov eax,4
mov ebx,1
mov ecx,msg4
mov edx,len4
int 0x80
xor ah,ah
mov al,[a]
div byte [b]
add al,'0'
mov [result],al
mov eax,4
mov ebx,1
mov ecx,result
mov edx,1
int 0x80
;=========================
; Xuống dòng cuối
;=========================
mov eax,4
mov ebx,1
mov ecx,newline
mov edx,1
int 0x80
mov eax,1
xor ebx,ebx
int 0x80
section .data
newline db 10
c2VjdGlvbiAuZGF0YQogICAgYSBkYiA5CiAgICBiIGRiIDMKCiAgICBtc2cxIGRiICI5ICsgMyA9ICIKICAgIGxlbjEgZXF1ICQtbXNnMQoKICAgIG1zZzIgZGIgMTAsIjkgLSAzID0gIgogICAgbGVuMiBlcXUgJC1tc2cyCgogICAgbXNnMyBkYiAxMCwiOSAqIDMgPSAiCiAgICBsZW4zIGVxdSAkLW1zZzMKCiAgICBtc2c0IGRiIDEwLCI5IC8gMyA9ICIKICAgIGxlbjQgZXF1ICQtbXNnNAoKc2VjdGlvbiAuYnNzCiAgICByZXN1bHQgcmVzYiAyCgpzZWN0aW9uIC50ZXh0Cmdsb2JhbCBfc3RhcnQKCl9zdGFydDoKCjs9PT09PT09PT09PT09PT09PT09PT09PT09CjsgVG9uZwo7PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgbW92IGVheCw0CiAgICBtb3YgZWJ4LDEKICAgIG1vdiBlY3gsbXNnMQogICAgbW92IGVkeCxsZW4xCiAgICBpbnQgMHg4MAoKICAgIG1vdiBhbCxbYV0KICAgIGFkZCBhbCxbYl0gICAgICAgICAgOyAxMgoKICAgIGFhbSAgICAgICAgICAgICAgICAgOyBBSD0xIEFMPTIKICAgIGFkZCBheCwzMDMwaAoKICAgIG1vdiBbcmVzdWx0XSxhaAogICAgbW92IFtyZXN1bHQrMV0sYWwKCiAgICBtb3YgZWF4LDQKICAgIG1vdiBlYngsMQogICAgbW92IGVjeCxyZXN1bHQKICAgIG1vdiBlZHgsMgogICAgaW50IDB4ODAKCjs9PT09PT09PT09PT09PT09PT09PT09PT09CjsgSGlldQo7PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgbW92IGVheCw0CiAgICBtb3YgZWJ4LDEKICAgIG1vdiBlY3gsbXNnMgogICAgbW92IGVkeCxsZW4yCiAgICBpbnQgMHg4MAoKICAgIG1vdiBhbCxbYV0KICAgIHN1YiBhbCxbYl0KICAgIGFkZCBhbCwnMCcKCiAgICBtb3YgW3Jlc3VsdF0sYWwKCiAgICBtb3YgZWF4LDQKICAgIG1vdiBlYngsMQogICAgbW92IGVjeCxyZXN1bHQKICAgIG1vdiBlZHgsMQogICAgaW50IDB4ODAKCjs9PT09PT09PT09PT09PT09PT09PT09PT09CjsgVGljaAo7PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgbW92IGVheCw0CiAgICBtb3YgZWJ4LDEKICAgIG1vdiBlY3gsbXNnMwogICAgbW92IGVkeCxsZW4zCiAgICBpbnQgMHg4MAoKICAgIG1vdiBhbCxbYV0KICAgIG11bCBieXRlIFtiXSAgICAgICAgOyAyNwoKICAgIGFhbQogICAgYWRkIGF4LDMwMzBoCgogICAgbW92IFtyZXN1bHRdLGFoCiAgICBtb3YgW3Jlc3VsdCsxXSxhbAoKICAgIG1vdiBlYXgsNAogICAgbW92IGVieCwxCiAgICBtb3YgZWN4LHJlc3VsdAogICAgbW92IGVkeCwyCiAgICBpbnQgMHg4MAoKOz09PT09PT09PT09PT09PT09PT09PT09PT0KOyBUaHVvbmcKOz09PT09PT09PT09PT09PT09PT09PT09PT0KICAgIG1vdiBlYXgsNAogICAgbW92IGVieCwxCiAgICBtb3YgZWN4LG1zZzQKICAgIG1vdiBlZHgsbGVuNAogICAgaW50IDB4ODAKCiAgICB4b3IgYWgsYWgKICAgIG1vdiBhbCxbYV0KICAgIGRpdiBieXRlIFtiXQoKICAgIGFkZCBhbCwnMCcKICAgIG1vdiBbcmVzdWx0XSxhbAoKICAgIG1vdiBlYXgsNAogICAgbW92IGVieCwxCiAgICBtb3YgZWN4LHJlc3VsdAogICAgbW92IGVkeCwxCiAgICBpbnQgMHg4MAoKOz09PT09PT09PT09PT09PT09PT09PT09PT0KOyBYdeG7kW5nIGTDsm5nIGN14buRaQo7PT09PT09PT09PT09PT09PT09PT09PT09PQogICAgbW92IGVheCw0CiAgICBtb3YgZWJ4LDEKICAgIG1vdiBlY3gsbmV3bGluZQogICAgbW92IGVkeCwxCiAgICBpbnQgMHg4MAoKICAgIG1vdiBlYXgsMQogICAgeG9yIGVieCxlYngKICAgIGludCAweDgwCgpzZWN0aW9uIC5kYXRhCm5ld2xpbmUgZGIgMTA=