Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ Работа с файлами

Автор: Pasha 19.04.2009 18:48

Помогите исправить код. Програмка работает, но выводит в конце набор символов norespect.gif

По заданию нужно из файла считать 10 бит с 5 бита


data segment
fl1 db '1.txt',0
fh dw ?
r dw 99 dup(?)
data ends

code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds,ax

mov ah,3dh ;io file open
mov al,02
lea dx,fl1
int 21h
mov fh, ax

mov bx,fh ;to 5 byte
mov ah,42h
mov al,0
mov cx,0
mov dx,5
int 21h

mov ah,3fh ;read func
mov bx,fh
mov cx,10
lea dx,r
int 21h


mov si,ax

mov ah,3eh ;close func
mov bx,fh
int 21h


mov ah,9h ;vivod r
lea dx,r
int 21h



mov ah,0
int 16h
mov ah,4ch
int 21h

code ends
end start


Автор: volvo 19.04.2009 19:22

У тебя строка должна заканчиваться символом '$', а ты ее не завершаешь этим символом. Вот и выводится мусор: строка печатается до тех пор, пока где-то не встретится $. Исправь:

data segment
fl1 db '1.txt',0
fh dw ?
r dw 99 dup('$') ; Вот это
data ends
, либо добавляй 11-м символом строки '$' вручную - все будет в порядке.

Автор: Pasha 19.04.2009 19:36

Спасибо большое good.gif . Что строку нужно заканчивать $ я знал, но что можно делать так нет.