Как переделать комовский код для .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.

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

8   голосов , оценка 3.5 из 5