Перевести код из FASM в TASM - Assembler

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

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

Нужно переобразовать код из fasm в tasm
Листинг программы
  1. org *100h
  2. jmp *start
  3. *
  4. fName * db *'*.*',0 * * * * * * *; маска для поиска файлов
  5. newDTA *db *45 dup(0) * * * * * *; область DTA
  6. newFn * db *13,10,16 dup(0) * * *; новое имя файла с CRLF для вывода
  7. ext * * db *'cul' * * * * * * * *; новое расширение
  8. noFile *db *13,10,'Rename OK! Press key to exit...$'
  9. *
  10. start:
  11. ; создать DTA
  12. * * * mov * ah,1ah
  13. * * * mov * dx,newDTA
  14. * * * int * 21h
  15. ; искать файлы
  16. * * * mov * ah,4eh
  17. * * * mov * cx,20h * * * * * ; * ..исключая папки.
  18. * * * mov * dx,fName
  19. * * * int * 21h
  20. * * * jc * *stop
  21. ; переименовать/вывести имя на экран
  22. find: call *reName_Print
  23. * * * mov * ah,4fh * * * * * ; искать сл.файл
  24. * * * mov * dx,newDTA
  25. * * * int * 21h
  26. * * * jnc * find
  27. ; Press key..
  28. stop: mov * ah,9
  29. * * * mov * dx,noFile
  30. * * * int * 21h
  31. ; выход по клавише
  32. exit: xor * ax,ax
  33. * * * int * 16h
  34. * * * int * 20h
  35. *
  36. ;ннннннннннннн ПРОЦЕДУРА нннннннннннннннннннннннннннннннннннн
  37. reName_Print:
  38. ; копируем имя файла из DTA, в буфер переименования
  39. * * * mov * si,newDTA+30
  40. * * * mov * di,newFn+2
  41. @01: *lodsb
  42. * * * or * *al,al
  43. * * * je * *@02
  44. * * * stosb
  45. * * * jmp * @01
  46. ; меняем расширение файла (3 символа с конца)
  47. ; скопировать из SI в DI
  48. @02: *sub * di,3
  49. * * * mov * si,ext
  50. * * * mov * cx,3
  51. * * * rep * movsb
  52. ; переименовать файл!
  53. * * * mov * ah,56h
  54. * * * mov * dx,newDTA+30
  55. * * * mov * di,newFn+2
  56. * * * int * 21h
  57. ; выводим новое имя на экран
  58. * * * mov * si,newFn
  59. @3: * lodsb
  60. * * * or * *al,al
  61. * * * je * *@4
  62. * * * int * 29h
  63. * * * jmp * @3
  64. ; очищаем поле имени в DTA, для сл.имени
  65. @4: * xor * al,al
  66. * * * mov * di,newDTA+30
  67. * * * mov * cx,16
  68. * * * rep * stosb
  69. ; очищаем буфер для сл.имени
  70. * * * mov * di,newFn+2
  71. * * * mov * cx,16
  72. * * * rep * stosb
  73. ret

Решение задачи: «Перевести код из FASM в TASM»

textual
Листинг программы
  1. .model tiny
  2. .code
  3. org 100h
  4. begin:

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

  1. Указываем модель, в данном случае tiny.
  2. Указываем сегмент кода, в данном случае 100h.
  3. Создаем точку входа в программу, в данном случае begin.
  4. Задаем команду mov ax, @data.
  5. Задаем команду mov ds, ax.
  6. Задаем команду mov es, ax.
  7. Задаем команду mov fs, ax.
  8. Задаем команду mov gs, ax.
  9. Задаем команду mov ss, ax.
  10. Задаем команду mov sp, 200h.
  11. Задаем команду cld.
  12. Задаем команду lodsb.
  13. Задаем команду scaSB.
  14. Задаем команду mov dx, 0.
  15. Задаем команду bsf stx, dx.
  16. Задаем команду bsf sty, dx.
  17. Задаем команду bsf stz, dx.
  18. Задаем команду mov dx, 0.
  19. Задаем команду lodsb.
  20. Задаем команду scaSB.

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


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

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

10   голосов , оценка 4.1 из 5

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

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

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