Пятница, 2025-06-20, 9:51 PM
Приветствую Вас Гость | RSS
Главная | API в языке Ассемблер | Регистрация | Вход
Меню сайта
Вход на сайт
Поиск
Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz
  • Программирование

    API-подобные процедуры в языке Ассемблер. Процедуры в Assembler

     

     

    Процедуры в языке Ассемблерработают также, как и в других языках программирования.

    Пример: Написать программу на Ассемблере вычисления выражений: b/c + ас 
    где а =5; 
    b =27; 
    c = 86; 
    е =1986; 
    d =1112; 
    Результат вычисления выражения сохранить в памяти. Навести значение и порядок размещения данные в памяти.


    Текст программы

    .386  ; директива определения команд микропроцессора
    .model  flat,stdcall      ; задание линейной модели памяти 
    ; но соглашения ОС Windows
    option casemap:none ; отличие строчных и прописных букв 
    includelib\masm32\lib\kernel32.lib 
    ExitProcess proto :DWORD 
    ADDDD proto :WORD, :WORD, :WORD ; прототип процедуры 
    .data               ; директива определения данные 
    res dw 2 dup(0)             ; резервирование амбарчиков для результата 
    .code  ; директива начала кода программы 
    start: ; метка начала программы с именем start
    invoke AddDD,5,86,1986        ; вызов директивы AddDD с параметрами 
    invoke ExitProcess,0
    ADDDD proc arg1:WORD,arg2:WORD,arg3:WORD
    mov eax,0     ; очистка регистров 
    mov ebx,0
    mov ecx,0
    mov edx,0

    mov ах,arg3 ; arg3 = 1986 
    div arg2      ; операция деления 
    mov bx,ax
    mov cx,dx

    mov ах,arg1  ; ах := arg1 
    mul arg2      ; ax* arg2 = 86 
    SHL edx,16      ; операция здвигу
    mov dx,ax

    add ebx,edx
    mov res,cx    ; запоминание в памяти 
    mov res+2,dx ; запоминание в памяти 
    ret     ; возвращение из процедуры 
    AddDD endp    ; окончание процедуры с именем AddDD
    end start     ; окончание программы с именем start


    Результат работы программы

    uCozCopyright MyCorp © 2025