bits 32
section .data
num1 dd 100 ; Делимое
num2 dd 10 ; Делитель
msg db "Quotient (lower byte): 0x", 0
newline db 10
section .bss
hex_digit resb 2
section .text
global _start
_start:
; Загружаем числа в регистры
mov eax, [num1] ; EAX = num1 (делимое)
mov ebx, [num2] ; EBX = num2 (делитель)
; Делим числа (беззнаковое деление)
xor edx, edx ; EDX:EAX = делимое (64 bit). EDX - high part, EAX - low part
div ebx ; EAX = EAX / EBX (частное), EDX = EAX % EBX (остаток)
; Получаем младший байт частного и преобразуем в hex
mov al, al
and al, 0x0F
cmp al, 0x0A
jl is_digit
add al, 0x37
jmp save_digit
is_digit:
add al, 0x30
save_digit:
mov [hex_digit], al
mov byte [hex_digit+1], 0
; Выводим сообщение и результат
mov eax, 4 ; sys_write
mov ebx, 1 ; stdout
mov ecx, msg ; message address
mov edx, 24 ; message length
int 0x80
mov eax, 4
mov ebx, 1
mov ecx, hex_digit
mov edx, 1
int 0x80
; Выводим новую строку
mov eax, 4
mov ebx, 1
mov ecx, newline
mov edx, 1
int 0x80
; Выход
mov eax, 1 ; sys_exit
xor ebx, ebx
int 0x80
Yml0cyAzMgoKc2VjdGlvbiAuZGF0YQogICAgbnVtMSBkZCAxMDAgICAgICAgICA7INCU0LXQu9C40LzQvtC1CiAgICBudW0yIGRkIDEwICAgICAgICAgIDsg0JTQtdC70LjRgtC10LvRjAogICAgbXNnIGRiICJRdW90aWVudCAobG93ZXIgYnl0ZSk6IDB4IiwgMAogICAgbmV3bGluZSBkYiAxMAoKc2VjdGlvbiAuYnNzCiAgICBoZXhfZGlnaXQgcmVzYiAyCgpzZWN0aW9uIC50ZXh0CiAgICBnbG9iYWwgX3N0YXJ0Cgpfc3RhcnQ6CiAgICA7INCX0LDQs9GA0YPQttCw0LXQvCDRh9C40YHQu9CwINCyINGA0LXQs9C40YHRgtGA0YsKICAgIG1vdiBlYXgsIFtudW0xXSAgICAgOyBFQVggPSBudW0xICjQtNC10LvQuNC80L7QtSkKICAgIG1vdiBlYngsIFtudW0yXSAgICAgOyBFQlggPSBudW0yICjQtNC10LvQuNGC0LXQu9GMKQoKICAgIDsg0JTQtdC70LjQvCDRh9C40YHQu9CwICjQsdC10LfQt9C90LDQutC+0LLQvtC1INC00LXQu9C10L3QuNC1KQogICAgeG9yIGVkeCwgZWR4ICAgICAgICA7IEVEWDpFQVggPSDQtNC10LvQuNC80L7QtSAoNjQgYml0KS4gRURYIC0gaGlnaCBwYXJ0LCBFQVggLSBsb3cgcGFydAogICAgZGl2IGVieCAgICAgICAgICAgICA7IEVBWCA9IEVBWCAvIEVCWCAo0YfQsNGB0YLQvdC+0LUpLCBFRFggPSBFQVggJSBFQlggKNC+0YHRgtCw0YLQvtC6KQoKICAgIDsg0J/QvtC70YPRh9Cw0LXQvCDQvNC70LDQtNGI0LjQuSDQsdCw0LnRgiDRh9Cw0YHRgtC90L7Qs9C+INC4INC/0YDQtdC+0LHRgNCw0LfRg9C10Lwg0LIgaGV4CiAgICBtb3YgYWwsIGFsCiAgICBhbmQgYWwsIDB4MEYKCiAgICBjbXAgYWwsIDB4MEEKICAgIGpsIGlzX2RpZ2l0CiAgICBhZGQgYWwsIDB4MzcKICAgIGptcCBzYXZlX2RpZ2l0Cgppc19kaWdpdDoKICAgIGFkZCBhbCwgMHgzMAoKc2F2ZV9kaWdpdDoKICAgIG1vdiBbaGV4X2RpZ2l0XSwgYWwKICAgIG1vdiBieXRlIFtoZXhfZGlnaXQrMV0sIDAKCiAgICA7INCS0YvQstC+0LTQuNC8INGB0L7QvtCx0YnQtdC90LjQtSDQuCDRgNC10LfRg9C70YzRgtCw0YIKICAgIG1vdiBlYXgsIDQgICAgICAgICAgIDsgc3lzX3dyaXRlCiAgICBtb3YgZWJ4LCAxICAgICAgICAgICA7IHN0ZG91dAogICAgbW92IGVjeCwgbXNnICAgICAgICAgOyBtZXNzYWdlIGFkZHJlc3MKICAgIG1vdiBlZHgsIDI0ICAgICAgICAgIDsgbWVzc2FnZSBsZW5ndGgKICAgIGludCAweDgwCgogICAgbW92IGVheCwgNAogICAgbW92IGVieCwgMQogICAgbW92IGVjeCwgaGV4X2RpZ2l0CiAgICBtb3YgZWR4LCAxCiAgICBpbnQgMHg4MAo7INCS0YvQstC+0LTQuNC8INC90L7QstGD0Y4g0YHRgtGA0L7QutGDCiAgICBtb3YgZWF4LCA0CiAgICBtb3YgZWJ4LCAxCiAgICBtb3YgZWN4LCBuZXdsaW5lCiAgICBtb3YgZWR4LCAxCiAgICBpbnQgMHg4MAoKICAgIDsg0JLRi9GF0L7QtAogICAgbW92IGVheCwgMSAgICAgICAgICAgOyBzeXNfZXhpdAogICAgeG9yIGVieCwgZWJ4CiAgICBpbnQgMHg4MAo=