2015-04-02 159 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