Написать простую программу на ассемблере - 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

Объяснение кода листинга программы

  1. Объединение кода и данных в одном файле.
  2. Код программы написан на ассемблере.
  3. Программа рассчитана на работу в операционной системе Windows.
  4. В первой части кода происходит формирование значения переменной eax, которая будет использоваться в качестве года.
  5. Во второй части кода выполняется проверка на год, который больше или равен 9. Если это так, то к значению переменной eax добавляется символ 'A', после чего значение переменной уменьшается на 10.
  6. Если значение переменной edx больше или равно 9, то выполняется аналогичная операция, но с переменной edx.
  7. Значения переменных al и dl используются в качестве строк для вывода диалогового окна.
  8. Выполняется вызов функции MessageBoxA для отображения диалогового окна с сообщением.
  9. Выполняется вызов функции ExitProcess для завершения работы программы.
  10. В конце программы присутствуют определения переменных и функций, которые будут использоваться в коде.

Оцени полезность:

10   голосов , оценка 4.5 из 5