bits 32
section .data
num1 dd 10 ; Первое число
num2 dd 5 ; Второе число
num3 dd 0 ; Третье число (делитель)
msg_result db "Result (lower byte): 0x", 0
msg_error db "Division by zero!", 0
newline db 10
section .bss
hex_digit resb 2
section .text
global _start
_start:
; Загружаем числа в регистры
mov eax, [num1]
mov ebx, [num2]
mov ecx, [num3]
; Умножаем num1 * num2
mul ebx
; Проверка: деление на ноль?
cmp ecx, 0
je division_by_zero
; Делим результат умножения на num3
mov ebx, ecx ; EBX = num3 (делитель)
div ebx ; EDX:EAX / EBX. EAX - Quotient, EDX - remainder
; Получаем младший байт частного и преобразуем в 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_result ; message address
mov edx, 22 ; 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
jmp end_program ; Пропускаем вывод ошибки
division_by_zero:
; Выводим сообщение об ошибке
mov eax, 4 ; sys_write
mov ebx, 1 ; stdout
mov ecx, msg_error ; message address
mov edx, 17 ; message length
int 0x80
; Выводим новую строку
mov eax, 4
mov ebx, 1
mov ecx, newline
mov edx, 1
int 0x80
end_program:
; Выход
mov eax, 1 ; sys_exit
xor ebx, ebx
int 0x80
Yml0cyAzMgoKc2VjdGlvbiAuZGF0YQogICAgbnVtMSBkZCAxMCAgICAgICAgICA7INCf0LXRgNCy0L7QtSDRh9C40YHQu9C+CiAgICBudW0yIGRkIDUgICAgICAgICAgIDsg0JLRgtC+0YDQvtC1INGH0LjRgdC70L4KICAgIG51bTMgZGQgMCAgICAgICAgICAgOyDQotGA0LXRgtGM0LUg0YfQuNGB0LvQviAo0LTQtdC70LjRgtC10LvRjCkKICAgIG1zZ19yZXN1bHQgZGIgIlJlc3VsdCAobG93ZXIgYnl0ZSk6IDB4IiwgMAogICAgbXNnX2Vycm9yIGRiICJEaXZpc2lvbiBieSB6ZXJvISIsIDAKICAgIG5ld2xpbmUgZGIgMTAKCnNlY3Rpb24gLmJzcwogICAgaGV4X2RpZ2l0IHJlc2IgMgoKc2VjdGlvbiAudGV4dAogICAgZ2xvYmFsIF9zdGFydAoKX3N0YXJ0OgogICAgOyDQl9Cw0LPRgNGD0LbQsNC10Lwg0YfQuNGB0LvQsCDQsiDRgNC10LPQuNGB0YLRgNGLCiAgICBtb3YgZWF4LCBbbnVtMV0KICAgIG1vdiBlYngsIFtudW0yXQogICAgbW92IGVjeCwgW251bTNdCgogICAgOyDQo9C80L3QvtC20LDQtdC8IG51bTEgKiBudW0yCiAgICBtdWwgZWJ4CgogICAgOyDQn9GA0L7QstC10YDQutCwOiDQtNC10LvQtdC90LjQtSDQvdCwINC90L7Qu9GMPwogICAgY21wIGVjeCwgMAogICAgamUgZGl2aXNpb25fYnlfemVybwoKICAgIDsg0JTQtdC70LjQvCDRgNC10LfRg9C70YzRgtCw0YIg0YPQvNC90L7QttC10L3QuNGPINC90LAgbnVtMwogICAgbW92IGVieCwgZWN4ICAgICA7IEVCWCA9IG51bTMgKNC00LXQu9C40YLQtdC70YwpCiAgICBkaXYgZWJ4ICAgICAgICAgICAgIDsgRURYOkVBWCAvIEVCWC4gIEVBWCAtIFF1b3RpZW50LCBFRFggLSByZW1haW5kZXIKCiAgICA7INCf0L7Qu9GD0YfQsNC10Lwg0LzQu9Cw0LTRiNC40Lkg0LHQsNC50YIg0YfQsNGB0YLQvdC+0LPQviDQuCDQv9GA0LXQvtCx0YDQsNC30YPQtdC8INCyIGhleAogICAgbW92IGFsLCBhbAogICAgYW5kIGFsLCAweDBGCgogICAgY21wIGFsLCAweDBBCiAgICBqbCBpc19kaWdpdAogICAgYWRkIGFsLCAweDM3CiAgICBqbXAgc2F2ZV9kaWdpdAoKaXNfZGlnaXQ6CiAgICBhZGQgYWwsIDB4MzAKCnNhdmVfZGlnaXQ6CiAgICBtb3YgW2hleF9kaWdpdF0sIGFsCiAgICBtb3YgYnl0ZSBbaGV4X2RpZ2l0KzFdLCAwCgogICAgOyDQktGL0LLQvtC00LjQvCDRgNC10LfRg9C70YzRgtCw0YIKICAgIG1vdiBlYXgsIDQgICAgICAgICAgIDsgc3lzX3dyaXRlCiAgICBtb3YgZWJ4LCAxICAgICAgICAgICA7IHN0ZG91dAogICAgbW92IGVjeCwgbXNnX3Jlc3VsdCAgOyBtZXNzYWdlIGFkZHJlc3MKICAgIG1vdiBlZHgsIDIyICAgICAgICAgIDsgbWVzc2FnZSBsZW5ndGgKICAgIGludCAweDgwCgogICAgbW92IGVheCwgNAogICAgbW92IGVieCwgMQogICAgbW92IGVjeCwgaGV4X2RpZ2l0CiAgICBtb3YgZWR4LCAxCiAgICBpbnQgMHg4MAoKICAgIDsg0JLRi9Cy0L7QtNC40Lwg0L3QvtCy0YPRjiDRgdGC0YDQvtC60YMKICAgIG1vdiBlYXgsIDQKICAgIG1vdiBlYngsIDEKICAgIG1vdiBlY3gsIG5ld2xpbmUKICAgIG1vdiBlZHgsIDEKICAgIGludCAweDgwCgogICAgam1wIGVuZF9wcm9ncmFtICAgICAgIDsg0J/RgNC+0L/Rg9GB0LrQsNC10Lwg0LLRi9Cy0L7QtCDQvtGI0LjQsdC60LgKCmRpdmlzaW9uX2J5X3plcm86CiAgICA7INCS0YvQstC+0LTQuNC8INGB0L7QvtCx0YnQtdC90LjQtSDQvtCxINC+0YjQuNCx0LrQtQogICAgbW92IGVheCwgNCAgICAgICAgICAgOyBzeXNfd3JpdGUKICAgIG1vdiBlYngsIDEgICAgICAgICAgIDsgc3Rkb3V0CiAgICBtb3YgZWN4LCBtc2dfZXJyb3IgICA7IG1lc3NhZ2UgYWRkcmVzcwogICAgbW92IGVkeCwgMTcgICAgICAgICAgOyBtZXNzYWdlIGxlbmd0aAogICAgaW50IDB4ODAKCiAgICA7INCS0YvQstC+0LTQuNC8INC90L7QstGD0Y4g0YHRgtGA0L7QutGDCiAgICBtb3YgZWF4LCA0CiAgICBtb3YgZWJ4LCAxCiAgICBtb3YgZWN4LCBuZXdsaW5lCiAgICBtb3YgZWR4LCAxCiAgICBpbnQgMHg4MAoKZW5kX3Byb2dyYW06CiAgICA7INCS0YvRhdC+0LQKICAgIG1vdiBlYXgsIDEgICAgICAgICAgIDsgc3lzX2V4aXQKICAgIHhvciBlYngsIGVieAogICAgaW50IDB4ODAK