Вывести на экран содержимое текстового файла, начиная с 15 символа - Assembler

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

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

Написать программу, которая выводит на экран содержимое текстового файла ASM.txt, начиная с 15 символа. Помогите пожалуйста!

Решение задачи: «Вывести на экран содержимое текстового файла, начиная с 15 символа»

textual
Листинг программы
;DOS, TASM, COM-файл
;tasm.exe /m filename.asm
;tlink.exe /t /x filename.obj
;
.model tiny
.code
.386
ORG 100h
START:
    mov ax,3d02h    ;открыть для чтения/записи
    mov dx,offset a
    int 21h
 
    mov bx,ax   ;больше не будет меняться
 
    mov ax,4200h    ;передвинуть указатель от начала к
    xor cx,cx   ;15
    mov dx,14   ;байту
    int 21h
 
    mov ah,3fh  ;читать
    mov cx,-1   ;ffffh байт
    mov dx,offset buf
    int 21h
 
    mov si,ax   ;прочитано байт
 
    mov ah,3eh  ;закрыть
    int 21h
 
    mov bx,dx
    mov byte ptr [si+bx],'$' ;записать в конце строки
    mov ah,9    ;вывод на экран
    int 21h
 
    xor ax,ax   ;ждать клавишу
    int 16h
 
    ret
 
a db 'Asm.txt',0
buf:
    end start

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

  1. .model tiny - устанавливает модель памяти, в данном случае модель tiny, которая подразумевает использование сегментной памяти.
  2. .code - указывает на то, что следующий код должен быть выполнен.
  3. .386 - указывает на то, что следует использовать 32-битные регистры.
  4. ORG 100h - определяет точку входа в программу, в данном случае 100h.
  5. START: - определяет точку начала выполнения кода.
  6. mov ax,3d02h - открывает файл для чтения и записи.
  7. mov dx,offset a - указывает на то, что следующий файл, который нужно открыть, это a.
  8. int 21h - выполняет системный вызов, в данном случае, вызывает функцию открытия файла.
  9. mov bx,ax - сохраняет в регистре bx значение регистра ax.
  10. mov ax,4200h - передвигает указатель на 15 байтов вперед от начала файла.
  11. xor cx,cx - устанавливает регистр cx равным 0, что означает, что мы хотим прочитать 15 байтов.
  12. mov dx,14 - указывает на то, что мы хотим прочитать 14 байтов (15 - 1).
  13. int 21h - выполняет системный вызов, в данном случае, вызывает функцию чтения файла.
  14. mov si,ax - сохраняет в регистре si значение регистра ax, которое является количеством прочитанных байтов.
  15. mov ah,3eh - закрывает файл.
  16. int 21h - выполняет системный вызов, в данном случае, вызывает функцию закрытия файла.
  17. mov bx,dx - сохраняет в регистре bx значение регистра dx.
  18. mov byte ptr [si+bx],'$' - записывает символ доллара в конец строки.
  19. mov ah,9 - устанавливает регистр ah равным 9, что означает, что мы хотим выполнить системный вызов, связанный с выводом на экран.
  20. int 21h - выполняет системный вызов, связанный с выводом на экран.
  21. xor ax,ax - устанавливает регистр ax равным 0, что означает, что мы хотим ждать нажатия клавиши.
  22. int 16h - выполняет системный вызов, связанный с ожиданием нажатия клавиши.
  23. ret - завершает выполнение программы.
  24. a db 'Asm.txt',0 - определяет строку Asm.txt для использования в программе.
  25. buf: - определяет буфер для использования в программе.
  26. end start - обозначает конец программы.

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


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

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

14   голосов , оценка 4.071 из 5
Похожие ответы