Как переделать комовский код для .exe - Assembler

Узнай цену своей работы

Формулировка задачи:

Есть вот код для проги .com. Как его переделать, чтобы можно было скомпилить в тасме в .exe?
Листинг программы
  1. .model tiny
  2. .code
  3. org 100h
  4. .startup
  5. mov dx,offset urname ;запрос ввода имени
  6. mov ah,09h
  7. int 21h
  8. ;-----------------------
  9. mov dx, offset name1 ;запись строки в переменную name1
  10. mov ah,0ah
  11. int 21h
  12. ;-----------------------
  13. mov dx,offset ursuname ;запрос ввода фамилии
  14. mov ah,09h
  15. int 21h
  16. ;-----------------------
  17. mov dx, offset surname ;запись строки в переменную surname
  18. mov ah,0ah
  19. int 21h
  20. ;-----------------------
  21. mov dx,offset vivod ;здесь вывод всех введенных данных
  22. lea di,vivod + 8
  23. lea si,name1+2
  24. mov cl,[name1+1]
  25. xor ch,ch
  26. rep movsb
  27. mov al,' '
  28. mov cx,2
  29. rep stosb
  30. lea si,surname+2
  31. mov cl,[surname+1]
  32. xor ch,ch
  33. rep movsb
  34. mov byte ptr [di],'$'
  35. mov ah,09h
  36. int 21h
  37. ret
  38. urname db 13,10,'Enter your name $'
  39. ursuname db 13,10,'Enter your surname $'
  40. name1 db 255,255,255 dup ("$")
  41. surname db 255,255,255 dup ("$")
  42. vivod db 10,13,"Hello $"
  43. end

Решение задачи: «Как переделать комовский код для .exe»

textual
Листинг программы
  1. .model small               
  2.  
  3. .data  
  4. urname db 13,10,'Enter your name $'
  5. ursuname db 13,10,'Enter your surname $'
  6. name1 db 255,255,255 dup ("$")
  7. surname db 255,255,255 dup ("$")
  8. vivod db 10,13,"Hello $"       
  9.  
  10. .stack             
  11. db 255 dup(?)      
  12.  
  13. .code              
  14. start:             
  15. mov ax,@data       
  16. mov ds,ax
  17. mov es,ax
  18.  
  19. mov dx,offset urname
  20. mov ah,09h
  21. int 21h
  22.  
  23. mov dx,offset name1
  24. mov ah,0Ah
  25. int 21h
  26.  
  27. mov dx,offset ursuname
  28. mov ah,09h
  29. int 21h
  30.  
  31. mov dx,offset surname
  32. mov ah,0Ah
  33. int 21h
  34.  
  35. mov dx,offset vivod
  36.  
  37. lea di,vivod+8
  38. lea si,name1+2
  39. mov cl,byte ptr [name1+1]
  40. xor ch,ch
  41. rep movsb
  42.  
  43. mov al,' '
  44. mov cx,2
  45. rep stosb
  46.  
  47. lea si,surname+2
  48. mov cl,byte ptr [surname+1]
  49. xor ch,ch
  50. rep movsb
  51.  
  52. mov byte ptr [di],'$'
  53. mov ah,09h
  54. int 21h
  55.  
  56. mov ah,4Ch         
  57. mov al,00h         
  58. int 21h            
  59. end start

Объяснение кода листинга программы

В этом коде на языке Assembler происходит ввод имени и фамилии с помощью функции int 21h, а затем выводится приветствие, используя функцию int 21h, и после этого выводится сообщение об успешном завершении работы программы. Имя и фамилия сохраняются в соответствующих переменных, а затем выводится сообщение, используя функцию int 21h. В конце работы программы выводится сообщение об успешном завершении работы программы с помощью функции int 21h.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут