Как переделать комовский код для .exe - Assembler
Формулировка задачи:
Есть вот код для проги .com. Как его переделать, чтобы можно было скомпилить в тасме в .exe?
.model tiny
.code
org 100h
.startup
mov dx,offset urname ;запрос ввода имени
mov ah,09h
int 21h
;-----------------------
mov dx, offset name1 ;запись строки в переменную name1
mov ah,0ah
int 21h
;-----------------------
mov dx,offset ursuname ;запрос ввода фамилии
mov ah,09h
int 21h
;-----------------------
mov dx, offset surname ;запись строки в переменную surname
mov ah,0ah
int 21h
;-----------------------
mov dx,offset vivod ;здесь вывод всех введенных данных
lea di,vivod + 8
lea si,name1+2
mov cl,[name1+1]
xor ch,ch
rep movsb
mov al,' '
mov cx,2
rep stosb
lea si,surname+2
mov cl,[surname+1]
xor ch,ch
rep movsb
mov byte ptr [di],'$'
mov ah,09h
int 21h
ret
urname db 13,10,'Enter your name $'
ursuname db 13,10,'Enter your surname $'
name1 db 255,255,255 dup ("$")
surname db 255,255,255 dup ("$")
vivod db 10,13,"Hello $"
endРешение задачи: «Как переделать комовский код для .exe»
textual
Листинг программы
.model small
.data
urname db 13,10,'Enter your name $'
ursuname db 13,10,'Enter your surname $'
name1 db 255,255,255 dup ("$")
surname db 255,255,255 dup ("$")
vivod db 10,13,"Hello $"
.stack
db 255 dup(?)
.code
start:
mov ax,@data
mov ds,ax
mov es,ax
mov dx,offset urname
mov ah,09h
int 21h
mov dx,offset name1
mov ah,0Ah
int 21h
mov dx,offset ursuname
mov ah,09h
int 21h
mov dx,offset surname
mov ah,0Ah
int 21h
mov dx,offset vivod
lea di,vivod+8
lea si,name1+2
mov cl,byte ptr [name1+1]
xor ch,ch
rep movsb
mov al,' '
mov cx,2
rep stosb
lea si,surname+2
mov cl,byte ptr [surname+1]
xor ch,ch
rep movsb
mov byte ptr [di],'$'
mov ah,09h
int 21h
mov ah,4Ch
mov al,00h
int 21h
end start
Объяснение кода листинга программы
В этом коде на языке Assembler происходит ввод имени и фамилии с помощью функции int 21h, а затем выводится приветствие, используя функцию int 21h, и после этого выводится сообщение об успешном завершении работы программы. Имя и фамилия сохраняются в соответствующих переменных, а затем выводится сообщение, используя функцию int 21h. В конце работы программы выводится сообщение об успешном завершении работы программы с помощью функции int 21h.