"Роберт Джордайн. Справочное пособие программиста - 2 (ассемблер, операционная система MS DOS)" - читать интересную книгу автора7. Завершите программу либо инструкцией RET, либо прерыванием 20H. Прерывание 20H - это стандартная функция для завершения программы и возврата управления в DOS. Даже когда программа за- вершается инструкцией RET, на самом деле используется прерывание 20H. Это происходит потому, что вершина стека первоначально со- держит 0. При выполнении завершающей инструкции программы RET, 0 выталкивается из стека, переназначая счетчик команд на начало PSP. Находящаяся в этой ячейке функция 20H, выполняется как сле- дующая инструкция программы, вызывая передачу управления в DOS. Все это означает, что Вам не надо при старте программы помещать на стек DS и 0 (PUSH DS / MOV AX,0 / PUSH AX), как это требуется для EXE файлов. После того как программа сконструирована таким образом, ас- семблируйте и компонуйте ее как обычно. Затем преобразуйте ее в форму COM c помощью утилиты EXE2BIN, имеющейся в MS DOS. Если имя программы, построенной компоновщиком MYPROG.EXE, то просто введи- те команду EXE2BIN MYPROG. В результате Вы получите программный файл с именем MYPROG.BIN. Все что Вам останется после этого сде- лать - переименовать этот файл в MYPROG.COM. Вы можете также сразу использовать команду EXE2BIN MYPROG MYPROG.COM, для получе- ния файла с расширением COM. Низкий уровень. В данном примере содержится полная короткая программа, которая по установке переключателей определяет количество накопителей в машине и затем выводит сообщение на экран. Она может служить примером короткой утилиты того сорта, для которых формат COM идеален. CSEG SEGMENT ORG 100H ASSUME CS:CSEG, DS:CSEG, SS:CSEG ;---данные START: JMP SHORT BEGIN ;переход к коду MESSAGE1 DB 'The dip switches are set for $' MESSAGE2 DB 'disk drive(s).$' ;---печать первой части сообщения BEGIN: MOV AH,9 ;функция 9 прерывания 21H - вывод MOV DX,OFFSET MESSAGE1 ;строки INT 21H ;выводим строку PUSH AX ;сохраняем номер функции на будущее ;---получаем установку переключателей из порта A микросхемы 8255 IN AL,61H ;получаем байт из порта B |
|
|