2015-04-02 126 views
1

我不能移動彙編語言中的指針。我試圖將指針移動到文件中的第4個位置,然後讀取並顯示3個字節。 這是我的代碼 -彙編語言文件指針

.model tiny 
.data 
fil1 db  'testing.txt',0 
dat1 db  100 dup('$') 
dat2 db  100 dup('$') 
.code 
.startup 
     mov  al,02h 
     lea  dx,fil1 
     mov  ah,3dh 
     int  21h 

     mov  bx,ax 
     mov  al,00 
     mov  cx,00 
     mov  dx,04 
     mov  ah,42h 
     int  21h 

     mov  bx,ax 
     lea  dx,dat2 
     mov  cx,3 
     mov  ah,3fh 
     int  21h 
     mov  ah,09h 
     lea  dx,dat2 
     int  21h 



     mov  ah,3eh 
     int  21h 
.exit 
end 

這不會在控制檯上顯示任何東西。 在此先感謝

+1

簡單刪除最後的「mov bx,ax」指令。因爲LSEEK函數(42h)在DX:AX中返回從文件開始位置以字節爲單位的新文件位置。第一個「mov bx,ax」指令已經將文件句柄移動到BX和BX中保持不變。 – 2015-04-02 05:53:08

回答

1

你的第二個mov bx,axlea dx,dat2前一個右)是不正確的,因爲ax不再包含在該點的文件句柄。由於bx已包含文件句柄,因此您可以簡單地刪除該文件mov

+0

感謝它的工作。但我有另一個問題。假設我想從後向移動指針說第四個文件的最後位置。我可以這樣做。我試着用'mov al,2'和'mov dx ,-4'但它不起作用 – Noober 2015-04-02 05:53:01

+0

使用子索引來減去寄存器的內容。 – 2015-04-02 06:03:00

+0

我試過了.'mov al,2','mov cx,0','mov dx,0',然後是'sub ax,4'但是這個沒有用 – Noober 2015-04-02 06:07:47