Вывести на экран содержимое текстового файла, начиная с 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
Объяснение кода листинга программы
- .model tiny - устанавливает модель памяти, в данном случае модель tiny, которая подразумевает использование сегментной памяти.
- .code - указывает на то, что следующий код должен быть выполнен.
- .386 - указывает на то, что следует использовать 32-битные регистры.
- ORG 100h - определяет точку входа в программу, в данном случае 100h.
- START: - определяет точку начала выполнения кода.
- mov ax,3d02h - открывает файл для чтения и записи.
- mov dx,offset a - указывает на то, что следующий файл, который нужно открыть, это
a
. - int 21h - выполняет системный вызов, в данном случае, вызывает функцию открытия файла.
- mov bx,ax - сохраняет в регистре bx значение регистра ax.
- mov ax,4200h - передвигает указатель на 15 байтов вперед от начала файла.
- xor cx,cx - устанавливает регистр cx равным 0, что означает, что мы хотим прочитать 15 байтов.
- mov dx,14 - указывает на то, что мы хотим прочитать 14 байтов (15 - 1).
- int 21h - выполняет системный вызов, в данном случае, вызывает функцию чтения файла.
- mov si,ax - сохраняет в регистре si значение регистра ax, которое является количеством прочитанных байтов.
- mov ah,3eh - закрывает файл.
- int 21h - выполняет системный вызов, в данном случае, вызывает функцию закрытия файла.
- mov bx,dx - сохраняет в регистре bx значение регистра dx.
- mov byte ptr [si+bx],'$' - записывает символ доллара в конец строки.
- mov ah,9 - устанавливает регистр ah равным 9, что означает, что мы хотим выполнить системный вызов, связанный с выводом на экран.
- int 21h - выполняет системный вызов, связанный с выводом на экран.
- xor ax,ax - устанавливает регистр ax равным 0, что означает, что мы хотим ждать нажатия клавиши.
- int 16h - выполняет системный вызов, связанный с ожиданием нажатия клавиши.
- ret - завершает выполнение программы.
- a db 'Asm.txt',0 - определяет строку
Asm.txt
для использования в программе. - buf: - определяет буфер для использования в программе.
- end start - обозначает конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д