Программа, которая выводит число в двоичном виде.
- title Автор: Довгополов Евгений Сергеевич
- .model small
- .stack 100h
- data segment public
- ____string db _"Microsoft Macro Assembler$"
- ____strlen equ ($-string)
- data ends
- code segment public _________________; Начало сегмента кода
- ____assume ds:data, cs:code
- ____main proc _______________________; Начало процедуры main
- ________mov ____ax, seg data_________; Получаем адрес сегмента памяти данных и сохраняем его в ax
- ________mov ____ds, ax_______________; Передаём адрес сегмента памяти данных из регистра ax в ds
- ________mov ____cx, strlen___________; Копируем значение переменной strlen в регистр cx
- ________lea ____si, ds:[string]______; Загружаем адрес переменной string в ds:si
- ____MainLoop:
- ________lodsb________________________; Загружаем байт из регистра-источника si в регистр al
- ________cmp ____al, 20h______________; Сравниваем значение в регистре al с пробелом
- ________jne ____Skip_________________; Если ZF=0, то пргыгаем на метку Skip
- ________mov ____byte ptr[si-1], 5Fh__; Копируем значение символа _ в регистр si-1
- ____Skip:
- ________loop ___MainLoop_____________; Выполняем цикл пока регистр CX≠0
- ________mov ____ah, 09h______________; Копируем значение функции вывода строки в регистр ah
- ________lea ____dx, ds:[string]______; Загружаем адрес переменной string в регистр ds:dx
- ________int ____21h__________________; Вызываем прерывание DOS
- ________mov ____ax, 4C00h____________; Копируем значение функции завершения в ah а значение в al
- ________int ____21h__________________; Вызываем прерывание DOS
- ____main endp _______________________; Конец процедуры main
- code ends ___________________________; Конец сегмента кода
- end main ____________________________; Конец файла. Точкой входа указывается процедура main