Преобразовать код ассемблера

Компьютеры программирование программы ассемблер Кодирование

Код для создание exe файла преобразовать в код для содания com файла

; masm dos com #
.286
.model small
.stack 100h
.data
; выводимые сообщения в кодировке DOS
mes1 db 'Programma ustanavlivaet videorezhim, vyvodit priglashenie, chitaet vvedennuyu stroku, proveryaet ee dlinu, obrabatyvaet(vstavlyaet probel posle kazhdogo simvola), vyvodit resultat'
db 10,13,'Vvedite stroku i nazhmite Enter',0Dh,0Ah,'$'
mes2 db 0Dh,0Ah,'Poluchennaya stroka: '

dest db 510 dup('$') ; место для размещения преобразованной строки
buff db 255,?,255 dup(?) ; структура для ввода строки:
; максимальная длина = 255
; длина введенной строки
; место для помещения вводимой строки
.code ; сегмент кода
start:
mov ax,@data ; настройка регистра
mov ds,ax ; сегмента данных
mov es,ax ; и вспомогательного регистров
; установка видеорежима
mov ax,3 ; функция установки видеорежима с очисткой экрана
int 10h
; вывод приглашения к вводу
mov ah,9 ; функция вывода сообщения
mov dx,offset mes1 ; адрес выводимого сообщения
int 21h
; ввод строки
mov ah,0Ah ; функция ввода строки
mov dx,offset buff ; адрес структуры для ввода строки
int 21h
; проверка длины строки
mov ch,0 ; старший байт длины строки = 0
mov cl,buff+1 ; младший байт равен длине строки
jcxz a2 ; если длина строки=0 - переходим на метку, строка пустая
; обработка строки
mov si,offset buff+2 ; адрес начала введенной строки
mov di,offset dest ; адрес для размещения результата обработки
mov ah,' ' ; добавляемый символ - пробел
cld ; строковые операции производим слева на право
a1: ; цикл обработки символов строки
lodsb ; AL=[SI] - текущий символ, SI=SI+1
stosw ; [DI]=AX (AL+' '), DI=DI+2
loop a1 ; повторять СХ раз (для всех символов строки)
dec di ; адрес после последнего символа
mov byte ptr [di],'$' ; добавляем признак конца строки для вывода
a2:
; вывод результата
mov ah,9 ; функция вывода сообщения
mov dx,offset mes2 ; выводимое сообщение
int 21h
; задержка до нажатия любой клавиши
mov ah,0 ; функция ввода символа нажатой клавиши
int 16h ; ожидаем нажатие
; завершение программы
mov AH, 0
int 16h
mov ax,4c00h ; функция завершения работы программы
int 21h ; завергаем работу программы
END start ; Start - метка, с которой начинается выполнение программы
Ответы:
данные переносишь в конец сегмента кода, между "int 21h" и "END start". после ".code" добавляешь строку "org 100h".


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.