Написать простую программу на ассемблере - Assembler
Формулировка задачи:
Задано числа Д, М, Р в різних форматах (db, dw, dd), де Д – день народження, М – місяць народження, Р – рік народження. Написати програму обчислення
Д ^ М + Р;
^ - лог. умножение.
Т.к. все числа в разных форматах, то в сегменте данных они должны быть в разных форматах (db, dw, dd). Затем, в сегменте .code (можно в начале программы) привести их к одному формату, например командой movzx, а затем выполнять условие. Использовать числа целые и результат вывести через функцию MessageBox.
Ребятки, помогите пожалуйста, ооочень нужно
Решение задачи: «Написать простую программу на ассемблере»
textual
Листинг программы
format PE GUI 4.0 include 'win32a.inc' mov eax,0 mov al,[nD] and ax,[nM] add eax,[nY] mov edx,0 mov ebx,10h div ebx cmp eax,9 jg meaxgt9 add eax,'0' jmp meaxle9 meaxgt9: add eax,'A' sub eax,10 meaxle9: cmp edx,9 jg medxgt9 add edx,'0' jmp medxle9 medxgt9: add edx,'A' sub edx,10 medxle9: mov [mes],al mov [mes+1],dl invoke MessageBoxA,0,mes,cap,MB_OK invoke ExitProcess,0 nD db 31 ;Day nM dw 12 ;Month nY dd 99 ;Year mes db 'xx',0 cap db 'result',0 data import library kernel32,'KERNEL32.DLL',\ user32,'USER32.DLL' import kernel32,\ ExitProcess,'ExitProcess' import user32,\ MessageBoxA,'MessageBoxA' end data
Объяснение кода листинга программы
- Объединение кода и данных в одном файле.
- Код программы написан на ассемблере.
- Программа рассчитана на работу в операционной системе Windows.
- В первой части кода происходит формирование значения переменной eax, которая будет использоваться в качестве года.
- Во второй части кода выполняется проверка на год, который больше или равен 9. Если это так, то к значению переменной eax добавляется символ 'A', после чего значение переменной уменьшается на 10.
- Если значение переменной edx больше или равно 9, то выполняется аналогичная операция, но с переменной edx.
- Значения переменных al и dl используются в качестве строк для вывода диалогового окна.
- Выполняется вызов функции MessageBoxA для отображения диалогового окна с сообщением.
- Выполняется вызов функции ExitProcess для завершения работы программы.
- В конце программы присутствуют определения переменных и функций, которые будут использоваться в коде.