Ассемблер и программирование для IBM PC


          

Ассемблер для IBM PC. Программы.


MOVE_CURSOR PROC FAR ASSUME CS:CODESEG
Ассемблер для IBM PC. Программы. 163
ROWWPAR EQU 8 ;Параметр "строка" COLPAR EQU 6 ;Параметр "столбец"
PUSH BP ;Сохранить регистр BP MOV BP,SP ;Установить BP на параметры
MOV SI,[BP+ROWPAR] ;SI указывает на строку MOV DH,[SI] ;Поместить столбец в DL
MOV AH,02 ;Функция установки курсора SUB BH,BH ;Страница #0 INT 10H
POP BP ;Вернуться RET 4 ; в вызывающую программу MOVE_CURSOR ENDP CODESEG ENDS END
Адрес начала Программа
00000 Таблица векторов прерываний (см. гл. 23)
00400 Область связи с постоянной памятью (ROM)
00500 Область связи с операционной системой (DOS)
00600 IBMBIO.COM Буфер каталога Дисковый буфер Блок параметров дисковода/таблица распределения файлов (FAT, одна для каждого дисковода)
XXXX0 Резидентная часть командного процессора COMMAND.COM
XXXX0 Область памяти для программ (типа COM или EXE)
XXXX0 Пользовательский стек для COM-программ (256 байтов)
XXXX0 Транзитная часть командного процессора COMMAND.COM (записывается в старшие адреса памяти).
TITLE EXDOS (EXE) Функция DOS 4BH для выполнения DIR CSEG GMENT PARA 'Code' ASSUME CS:CSEG,DS:CSEG,ES:CSEG BEGIN: JMP SHORT MAIN ;---------------------------------------------------------- PARAREA DW ? ;Адрес строки вызова
Ассемблер для IBM PC. Программы. 164
DW OFFSET DIRCOM ;Указатель ; на командную строку DW CSEG DW OFFSET FCB1 ;Указатель на FCB2 DW CSEG
DIRCOM DB 17,'/C DIR D:',13,0 FCB1 DB 16 DUP(0) FCB2 DB 16 DUP(0) PROGNAM DB 'D:COMMAND.COM',0 ; --------------------------------------------------------- MAIN PROC FAR MOV AH,4AH ;Получить 64K памяти MOV BH,100H ; в параграфах INT 21H JC E10ERR ;Нет памяти?
MOV DI,2CH ;Получить сегментный адрес MOV AX,[DI] ; строки вызова LEA SI,PARAREA ; и записать его в MOV [SI],AX ; 1 слово блока параметров MOV AX,CS ;Загрузить в DS и ES MOV DS,AX ; адрес CSEG MOV ES,AX
MOV AH,4BH ;Функция загрузки MOV AL,00 ; и выполнения LEA BX,PARAREA ; COMMAND.COM LEA DX,PROGNAM INT 21H ;Вызвать DOS JC E20ERR ;Ошибка выполнения? MOV AL,00 ;Нет кода ошибки JMP X10XIT 0ERR: MOV AL,01 ;Код ошибки 1 JMP X10XIT 0ERR: MOV AL,02 ;Код ошибки 2 JMP X10XIT 0XIT: MOV AH,4CH ;Функция завершения INT 21H ;Вызвать DOS IN ENDP EG ENDS END

Содержание  Назад  Вперед