File: [NUL.MAP]: CON Libraries [.LIB]: <return> Start Stop Length Name Class 00000H 00022H 0023H CODESG CODE <-- Примечание: 1 сегмент кода 00030H 00033H 0004H DATASG DATA 00040H 000BFH 0080H STACKSG STACK Program entry point at 0000:0000 Ассемблер для IBM PC. Программы. 156 page 60,132 TITLE CALLMUL3 (EXE) Вызов подпрограммы ; для умножения EXTRN SUBMUL:FAR PUBLIC QTY,PRICE ;------------------------------------------------- 0000 STACKSG SEGMENT PARA STACK 'Stack' 0000 40 [????] DW 64 DUP(?) 0080 STACKSD ENDS ;------------------------------------------------- 0000 DATASG SEGMENT PARA PUBLIC 'Data' 0000 0140 QTY DW 0140H 0002 2500 PRICE DW 2500H 0004 DATASG ENDS ;------------------------------------------------- 0000 CODESG SEGMENT PARA PUBLIC 'Code' 0000 BEGIN PROC FAR ASSUME CS:CODESG,DS:DATASG,SS:STACKSG 0000 1E PUSH DS 0001 2B C0 SUB AX,AX 0003 50 PUSH AX 0004 B8 ---- R MOV AX,DATASG 0007 8E D8 MOV DS,AX 0009 9A 0000 ---- E CALL SUBMUL ;Вызвать подпрограмму 000E CB RET 000F BEGIN ENDP 000F CODESG ENDS END BEGIN Segments and Groups: N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 000F PARA PUBLIC 'CODE' DATASG . . . . . . . . . . . . 0004 PARA PUBLIC 'DATA' STACKSG. . . . . . . . . . . . 0080 PARA STACK 'STACK' Symbols: N a m e Type Value Attr BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Length=000F PRICE. . . . . . . . . . . . . L WORD 0002 DATASG Global QTY. . . . . . . . . . . . . . L WORD 0000 DATASG Global SUBMUL . . . . . . . . . . . . L FAR 0000 External page 60,132 TITLE SUBMUL Подпрограмма для умножения EXTRN QTY:WORD,PRICE:WORD ;------------------------------------------------- 0000 CODESG SEGMENT PARA PUBLIC 'CODE' 0000 SUBMUL PROC FAR ASSUME CS:CODESG PUBLIC SUBMUL Ассемблер для IBM PC. Программы. 157 0000 A1 0000 E MOV AX,PRICE 0003 8B 1E 0000 E MOV BX,QTY 0007 F7 E3 MUL BX ;Произведение в DX:AX 0009 CB RET 000A SUBMUL ENDP 000A CODESG ENDS END SUBMUL Segments and Groups: N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 000A PARA PUBLIC 'CODE' Symbols: N a m e Type Value Attr PRICE. . . . . . . . . . . . . V WORD 0000 External QTY. . . . . . . . . . . . . . V WORD 0000 External SUBMUL . . . . . . . . . . . . F PROC 0000 CODESG Global Length=000A LINK IBM Personal Computer Linker Version 2.30 (C) Copyright IBM Corp 1981, 1985 Object Modules: B:CALLMUL3+B:SUBMUL3 Run File: [B:CALLMUL3.EXE]: <return> List File: [NUL.MAP]: CON Libraries [.LIB]: <return> Start Stop Length Name Class 00000H 00019H 001AH CODESG CODE 00030H 00033H 0004H DATASG DATA 00040H 000BFH 0080H STACKSG STACK PROGRAM entry point at 0000:0000 Ассемблер для IBM PC. Программы. 158 page 60,132 TITLE CALLMULL4 (EXE) Передача параметров ; в подпрограмму EXTRN SUBMUL:FAR ;------------------------------------------------- 0000 STACKSG SEGMENT PARA STACK 'Stack' 0000 40 [ ???? ] DW 64 DUP(?) 0080 STACKSG ENDS ;------------------------------------------------- 0000 DATASG SEGMENT PARA 'Data' 0000 0140 QTY DW 0140H 0002 2500 PRICE DW 2500H 0004 DATASG ENDS ;------------------------------------------------- 0000 CODESG SEGMENT PARA PUBLIC 'Code' 0000 BEGIN PROC FAR ASSUME CS:CODESG,DS:DATASG,SS:STACKSG 0000 1E PUSH DS 0001 2B C0 SUB AX,AX 0003 50 PUSH AX 0004 B8 ---- R MOV A,DATASG 0007 8E D8 MOV DS,AX 0009 FF 36 0002 R PUSH PRICE 000D FF 36 0000 R PUSH QTY 0011 9A 0000 ---- E CALL SUBMUL ;Вызвать подпрограмму 0016 CB RET 0017 BEGIN ENDP 0017 CODESG ENDS END BEGIN Segments and Groups: N a m e Sise Align Combine Class CODESG . . . . . . . . . . . . 0017 PARA NONE 'CODE' DATASG . . . . . . . . . . . . 0004 PARA NONE 'DATA' STACKSG. . . . . . . . . . . . 0080 PARA STACK 'STACK' Symbols: N a m e Type Value Attr BEGIN. . . . . . . . . . . . . F PROC 0000 CODESG Length=0017 PRICE. . . . . . . . . . . . . L WORD 0002 DATASG QTY. . . . . . . . . . . . . . L WORD 0000 DATASG SUBMUL . . . . . . . . . . . . L FAR 0000 External page 60,132 TITLE SUBMUL Вызываемая подпрограмма умножения 0000 CODESG SEGMENT PARA PUBLIC 'Code' 0000 SUBMUL PROC FAR ASSUME CS:CODESG PUBLIC SUMBUL 0000 55 PUSH BP 0001 8P EC MOV BP,SP Ассемблер для IBM PC. Программы. 159 0003 8B 46 08 MOV AX,[BP+8] ;Стоимость 0006 8B 5E 06 MOV BX,[BP+6] ;Количество 0009 F7 E3 MUL BX ;Произведение в DX:AX 000B 5D POP BP 000F SUMBUL ENDP 000F CODESG ENDS END Segments and Groups: N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 000F PARA PUBLIC 'CODE' Symbols: N a m e Type Value Attr SUBMUL . . . . . . . . . . . . F PROC 0000 CODESG Global Length=000F LINK IBM Personal Computer Linker Version 2.30 (C) Copyright IBM Corp 1981, 1985 Object Modules: B:CALLMUL4+B:SUBMUL4 Run File: [B:CALLMUL4.EXE]: <return> List File: [NUL.MAP]: CON Libraries [.LIB]: <return> Start Stop Length Name Class 00000H 00019H 001AH CODESG CODE 00030H 00033H 0004H DATASG DATA 00040H 000BFH 0080H STACKSG STACK PROGRAM entry point at 0000:0000 Ассемблер для IBM PC. Программы. 160 LOAD"D:BASTEST.BAS LIST 010 CLEAR ,32768! 020 ' для BLOAD 030 ' для DEFSEG 040 ' для точки входа в CALL 050 ' для вызова ASM-модуля 060 FOR N = 1 TO 5 070 INPUT "Hours "; H 080 INPUT "Rate "; R 090 W = H * R 100 PRINT "Wage = " W 110 NEXT N 120 END TITLE LINKBAS Ассемблерная подпрограмма, вызываемая из BASIC CODESG SEGMENT PARA 'CODE' ASSUME CS:CODESG CLRSCRN PROC FAR PUSH BP ;Сохранить BP MOV BP,SP ;База списка параметров MOV AX,0600H ;Функция прокрутки MOV BH,07 ; всего MOV CX,0000 ; экрана MOV DX,184FH INT 10H POP BP RET ;Завершить подпрограмму CLRSCRN ENDP CODESG ENDS END Ассемблер для IBM PC. Программы. 161 D>LINK IBM Personal Computer Linker Version 2.30 (C) Copyright IBM Corp. 1981, 1985 Object Modules [.OBJ]: LINKBAS Run File [LINKBAS.EXE]: LINKBAS/HIGH List File [NUL.MAP]: CON Libraries [.LIB]: Warning: no stack segment Start Stop Length Name Class 00000H 00011H 00012H CODESG CODE D>DEBUG BASIC.COM -R AX=0000 BX=0000 CX=0012 DX=0000 SP=FFFF BP=0000 SI=0000 DI=0000 DS=1410 ES=1410 SS=1410 CS=1410 IP=0100 NV UP EI PL NZ NA PO NC 1410:0100 E9E03E JMP 3FE3 -N D:LINKBAS.EXE -L -R AX=FFA3 BX=0000 CX=0012 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000 DS=1410 ES=1410 SS=9FE0 CS=9FE0 IP=0000 NV UP EI PL NZ NA PO NC 9FE0:0000 55 -R SS SS 9FE0 :1410 -R CS CS 9FE0 :1410 -R IP IP 0000 :0100 -G Ok DEF SEG = &H9EF0 Ok BSAVE "D:CLRSCREEN.MOD",0,&H12 Ok SYSTEM Program terminated normally -Q D>BASIC IBM Personal Computer Basic Ver4sion D3.10 Copyright IBM Corp. 1981, 1985 61310 Bytes free Ok LOAD"D:BASTEST.BAS Ok 20 BLOAD "D:CLRSCREEN.MOD" 30 DEF SEG = &H9FE0 40 CLRSCRN = 0 Ассемблер для IBM PC. Программы. 162 50 CALL CLRSCRN LIST 10 CLEAR ,32768! 20 BLOAD "D:CLRSCRN.MOD" 30 DEF SEG = &H9FE0 40 CLRSCRN = 0 50 CALL CLRSCRN 60 FOR N = 1 TO 5 70 INPUT "HOURS"; H 80 INPUT "rATE"; R 90 W = H * R 100 PRINT "WAGE = " W 110 NEXT N 120 END Ok program pascall ( input, output ); procedure move_cursor( const row: integer; const col: integer ); extern; var temp_row: integer; temp_col: integer; begin write( 'Enter cursor row: ' ); readln( temp_row ); write( 'Enter cursor column:' ); readln( temp_col ); move_cursor( temprow, temp_col ); write( 'New cursor location' ); end. TITLE MOVCUR Подпрограмма на ассемблере, ; вызываемая из программы на Паскале PUBLIC MOVE_CURSOR ;---------------------------------------------------------- ; MOVE_CURSOR: Устанавливает курсор ; по переданным параметрам ; Параметры: const row Строка и столбец ; const col для установки курсора ; Возвращаемое значение: Отсутствует ;---------------------------------------------------------- CODESEG SEGMENT PARA PUBLIC 'CODE' 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 Адрес Функция прерывания (шест.) (шест.) 0-3 0 Деление на ноль 4-7 1 Пошаговый режим (трассировка для DEBUG) Ассемблер для IBM PC. Программы. 165 8-B 2 Немаскируемое прерывание (NMI) C-F 3 Точка останова в потоке команд (для DEBUG) 10-13 4 Переполнение регистров АЛУ 14-17 5 Печать экрана 18-1F Зарезервировано 20-23 8 Сигнал от таймера 24-27 9 Сигнал от клавиатуры 28-37 A,B,C,D Используются для AT 38-3B E Сигнал от дисковода 3C-3F F Обслуживание принтера 40-43 10 Управление экраном (см. гл. 8,9,10) 44-47 11 Запрос списка оборудования (см. гл. 9) 48-4B 12 Запрос размера физической памяти (см. гл. 2) 4C-4F 13 Управление дисковым вводом-выводом (гл. 18) 50-53 14 Управление коммуникационным вводом-выводом 54-57 15 Управление магнитофоном и спец.функции для AT 58-5B 16 Управление вводом с клавиатуры (гл. 9) 5C-5F 17 Вывод на принтер (гл. 19) 60-63 18 Обращение к BASIC в ПЗУ (ROM) 64-67 19 Перезагрузка системы 68-6B 1A Запрос и установка времени и даты 6C-6F 1B Получение управления по прерыванию с клавиатуры 70-73 1C Получение управления по прерыванию от таймера 74-77 1D Адрес таблицы параметров инициализации дисплея 78-7B 1E Адрес таблицы параметров дисковода 7C-7F 1F Адрес таблицы графических символов 80-83 20 DOS Нормальное завершение программы 84-87 21 DOS Обращение к функциям DOS 88-8B 22 DOS Адрес подпрограммы обработки завершения 8C-8F 23 DOS Адрес подпрограммы реакции на Ctrl+Break 90-93 24 DOS Вектор подпрограммы реакции на фатальную ошибку 94-97 25 DOS Абсолютное чтение секторов диска 98-9B 26 DOS Абсолютная запись на сектора диска 9C-9F 27 DOS Завершение программы, оставляющее ее резидентом A0-FF 28-3F DOS Операции DOS 100-1FF 40-7F Зарезервировано 200-217 80-85 Зарезервировано для BASIC 218-3C3 86-F0 Используется BASIC-интерпретатором 3C4-3FF F1-FF Зарезервировано Примечание: прерывания 00-1F для BIOS, 20-FF для DOS и BASIC TITLE RESIDENT (COM) Резидентная программа для очистки ; экрана и установки цвета при нажатии ; Alt+Left Shift ;---------------------------------------------------------- INTTAB SEGMENT AT 0H ;Таблица векторов прерываний: ORG 9H*4 ; адрес для Int 9H, KBADDR LABEL DWORD ; двойное слово INTTAB ENDS Ассемблер для IBM PC. Программы. 166 ;---------------------------------------------------------- ROMAREA SEGMENT AT 400H ;Область параметров BIOS: ORG 17H ; адрес флага клавиатуры, KBFLAG DB ? ; состояние Alt + Shift ROMAREA ENDS ;---------------------------------------------------------- CSEG SEGMENT PARA ;Сегмент кода ASSUME CS:CS ORG 100H BEGIN: JMP INITZ ;Выполняется только один раз KBSAVE DD ? ;Для адреса INT 9 BIOS ; Очистка экрана и установка цветов: ; --------------------------------- COLORS PROC NEAR ;Процедура выполняется PUSH AX ; при нажатии Alt+Left Shift PUSH BX PUSH CX ;Сохранить регистры PUSH DX PUSH SI PUSH DI PUSH DS PUSH ES PUSHF CALL KBSAV ;Обработать прерывание ASSUME DS:ROMAREA MOV AX,ROMAREA ;Установить DS для MOV DS,AX ; доступа к состоянию MOV AL,KB AG ; Alt+Left Shift CMP AL,00001010B ;Alt+Left Shift нажаты? JNE EXIT ; нет - выйти MOV AX,0600H ;Функция прокрутки MOV BH,61H ;Установить цвет MOV CX,00 MOV DX,18 FH INT 10H EXIT: POP ES ;Восстановить регистры POP DS POP DI POP SI POP DX POP CX POP BX POP AX IRET ;Вернуться COLORS ENDP ; Подпрограмма инициализации: ; -------------------------- INITZE PROC NEAR ;Выполнять только один раз Ассемблер для IBM PC. Программы. 167 ASSUME DS:INTTAB PUSH DS ;Обеспечить возврат в DOS MOV AX,INTTAB ;Установить сегмент данных MOV DS,AX CLI ;Запретить прерывания ;Замена адреса обработчика: MOV AX,WORD PTR KBADDR ;Сохранить адрес MOV WORD PTR KBSAVE,AX ; BIOS MOV AX,WORD PTR BADDR+2 MOV WORD PTR KBSAVE+2,AX MOV WORD PTR KBADDR,OFFSET COLORS ;Заменить MOV WORD PTR KBADDR+2,CS ; адрес BIOS STI ;Разрешить прерывания MOV DX,OFFSET INITZE ;Размер программы INT 27H ;Завершить и остаться INITZE ENDP ; резидентом CSEG ENDS END BEGIN TITLE SOUND (COM) Процедура для генерации звука SOUNSG SEGMENT PARA 'Code' ASSUME CS:SOUNG,DS:SOUNG,SS:SOUNG ORG 100H BEGIN: JMP SHORT MAIN ; ------------------------------------------------------- DURTION DW 1000 ;Время звучания TONE DW 256H ;Высота (частота) звука ; ------------------------------------------------------- MAIN PROC NEAR IN AL,61H ;Получить и сохранить PUSH AX ; данные порта CLI ;Запретить прерывания CALL B10SPKR ;Произвести звук POP AX ;Восстановить значение OUT 61H,AL ; порта STI ;Разрешить прерывания RET MAIN ENDP B10SPKR PROC NEAR B20: MOV DX,DURTION ;Установить время звучания B30: AND AL,11111100B ;Очистить биты 0 и 1 OUT 61H,AL ;Передать на динамик MOV CX,TONE ;Установить частоту B40: LOOP B40 ;Задержка времени OR AL,00000010B ;Установить бит 1 OUT 61H,AL ;Передать на динамик MOV CX,TONE ;становить частоту Ассемблер для IBM PC. Программы. 168 B50: LOOP B50 ;Задержка времени DEC DX ;Уменьшить время звучания JNZ B30 ;Продолжать? SHL DURTION,1 ; нет - увеличить время, SHR TONE,1 ; сократить частоту JNZ B20 ;Нулевая частота? RET ; да - выйти B10SPKR ENDP SOUNSG ENDS END BEGIN Ассемблер для IBM PC 98 TITLE RECORD (COM) Проверка директивы RECORD 0000 CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,SS:CODESG 0100 ORG 100H 0100 EB 02 BEGIN: JMP SHORT MAIN ; ----------------------------------------------------- BITREC RECORD BIT1:3,BIT2:7,BIT3:6 ;Определить запись 0102 9A AD DEFBITS BITREC <101B,0110110B,011010B> ;Инициализировать биты ; ----------------------------------------------------- 0104 MAIN PROC NEAR 0104 A10: ;Ширина: 0104 B7 10 MOV BH,WIDTH BITREC ; записи (16) 0106 B0 07 MOV AL,WIDTH BIT2 ; поля (07) 0108 B10: ;Величина сдвига: 0108 B1 0D MOV CL,BIT1 ; шест.0D 010A B1 06 MOV CL,BIT2 ; 06 010C B1 00 MOV CL,BIT3 ; 00 010E C10: ;Маска: 010E B8 E000 MOV AX,MASK BIT1 ; шест.E000 0111 BB 1FC0 MOV BX,MASK BIT2 ; 1FC0 0114 B9 003F MOV CX,MASK BIT3 ; 003F 0117 D10: ;Выделение BIT2: 0117 A1 0102 R MOV AX,DEFBITS ; получить запись, 011A 25 1FC0 AND AX,MASK BIT2 ; очистить BIT1 и BIT3, 011D B1 06 MOV CL,BIT2 ; получить сдвиг 06, 011F D3 E8 SHR AX,CL ; сдвинуть вправо 0121 E10: ;Выделение BIT1: 0121 A1 0102 R MOV AX,DEFBITS ; получить запись, 0124 B1 0D MOV CL,BIT1 ; получить сдвиг 13, 0126 D3 E8 SHR AX,CL ; сдвинуть вправо 0128 C3 RET 0129 MAIN ENDP 0129 CODESG ENDS END BEGIN Structures and records: N a m e Widht # fields Shift Widht Mask Initial BITREC . . . . . . . . . . . 0010 0003 BIT1 . . . . . . . . . . . . 000D 0003 E000 0000 BIT2 . . . . . . . . . . . . . 0006 0007 1FC0 0000 BIT3 . . . . . . . . . . . . 0000 0006 003F 0000 Segments and Groups: N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 0129 PARA NONE 'CODE' Symbols: N a m e Type Value Attr A10. . . . . . . . . . . . . . L NEAR 0104 CODESG B10. . . . . . . . . . . . . . L NEAR 0108 CODESG Ассемблер для IBM PC 99 BEGIN. . . . . . . . . . . . . L NEAR 0100 CODESG C10. . . . . . . . . . . . . . L NEAR 010E CODESG D10. . . . . . . . . . . . . . L NEAR 0117 CODESG DEFBITS. . . . . . . . . . . . L WORD 0102 CODESG E10. . . . . . . . . . . . . . L NEAR 0121 CODESG MAIN . . . . . . . . . . . . . N PROC 0104 CODESG Length =0025 Ассемблер для IBM PC 100 TITLE DSTRUC (COM) Определение структуры 0000 CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,SS:CODESG 0100 ORG 100H 0100 EB 29 BEGIN: JMP SHORT MAIN ; --------------------------------------------- PARLIST STRUC ;Список параметров 0000 19 MAXLEN DB 25 ; 0001 ?? ACTLEN DB ? ; 0002 19 [ 20 ] NAMEIN DB 25 DUP(' ') ; 001B PARLIST ENDS ; 0102 19 PARAMS PARLIST <> ;Область структуры 0103 ?? 0104 19 [ 20 ] 011D 57 68 61 74 20 69 PROMPT DB 'What is name?', 'S' 73 20 6E 61 6D 65 3F 24 ; --------------------------------------------- 012B MAIN PROC NEAR 012B B4 09 MOV AH,09 ;Выдать запрос 012D 8D 16 011D R LEA DX,PROMPT 0131 CD 21 INT 21H 0133 B4 0A MOV AH,0AH ;Получить ввод 0135 8D 16 0102 R LEA DX,PARAMS 0139 CD 21 INT 21H 013B A0 0103 R MOV AL,PARAMS.ACTLEN ;Длина ввода ; ... 013E C3 RET 013F MAIN ENDP 013F CODESG ENDS END BEGIN Structures and records: N a m e Width # fields Shift Width Masc Initial PARLIST. . . . . . . . . . . . . 001B 0003 MAXLEN . . . . . . . . . . . . 0000 ACTLEN . . . . . . . . . . . . 0001 NAMEIN . . . . . . . . . . . . 0002 Segments and Groups: N a m e Size Align Combine Class CODESG . . . . . . . . . . . . . 013F PARA NONE 'CODE' Symbols: N a m e Type Value Attr BEGIN. . . . . . . . . . . . . L NEAR 0100 CODESG MAIN . . . . . . . . . . . . . N PROC 012B CODESG Length =0014 PARAMS . . . . . . . . . . . . L 001B 0102 CODESG PROMPT . . . . . . . . . . . . L BYTE 011D CODESG Ассемблер для IBM PC 101 Основные, базовые и индексные регистры: Биты: w = 0 w = 1 000 AL AX 001 CL CX 010 DL DX 011 BL BX 100 AH SP 101 CH BP 110 DH SI 111 BH DI Биты: Сегментный регистр: 00 ES 01 CS 10 SS 11 DS r/m mod=00 mod=01 mod=10 mod=1.1 mod=11 w=0 w=1 000 BX+SI BX+SI+disp BX+SI+disp AL AX 001 BX+DI BX+DI+disp BX+DI+disp CL CX 010 BP+SI BP+SI+disp BP+SI+disp DL DX 011 BP+DI BP+DI+disp BP+DI+disp BL BX 100 SI SI+disp SI+disp AH SP 101 DI DI+disp DI+disp CH BP 110 Direct BP+disp BP+disp DH SI 111 BX BX+disp BX+disp BH DI Ассемблер для IBM PC 102 Таблица A-1 Набор ASCII символов Дес Шест Симв Дес Шест Симв Дес Шест Симв Дес Шест Симв 000 00h Нуль 032 20h sp 064 40h @ 096 60h ` 001 01h Начало заголовка 033 21h ! 065 41h A 097 61h a 002 02h Начало текста 034 22h " 066 42h B 098 62h b 003 03h Конец текста 035 23h # 067 43h C 099 63h c 004 04h Конец передачи 036 24h $ 068 44h D 100 64h d 005 05h КТМ 037 25h % 069 45h E 101 65h e 006 06h Да 038 26h & 070 46h F 102 66h f 007 07h Звонок 039 27h ' 071 47h G 103 67h g 008 08h Возврат на шаг 040 28h ( 072 48h H 104 68h h 009 09h Гориз.табуляция 041 29h ) 073 49h I 105 69h i 010 0Ah Перевод строки 042 2Ah * 074 4Ah J 106 6Ah j 011 0Bh Верт.табуляция 043 2Bh + 075 4Bh K 107 6Bh k 012 0Ch Перевод страницы 044 2Ch , 076 4Ch L 108 6Ch l 013 0Dh Возврат каретки 045 2Dh - 077 4Dh M 109 6Dh m 014 0Eh Shift out 046 2Eh . 078 4Eh N 110 6Eh n 015 0Fh Shift in 047 2Fh / 079 4Fh O 111 6Fh o 016 10h Data line esc 048 30h 0 080 50h P 112 70h p 017 11h Управление 1 049 31h 1 081 51h Q 113 71h q 018 12h Управление 2 050 32h 2 082 52h R 114 72h r 019 13h Управление 3 051 33h 3 083 53h S 115 73h s 020 14h Управление 4 052 34h 4 084 54h T 116 74h t 021 15h Нет 053 35h 5 085 55h U 117 75h u 022 16h Синхронизация 054 36h 6 086 56h V 118 76h v 023 17h Конец блока 055 37h 7 087 57h W 119 77h w 024 18h Анулирование 056 38h 8 088 58h X 120 78h x 025 19h End of medium 057 39h 9 089 59h Y 121 79h y 026 1Ah Замена 058 3Ah : 090 5Ah Z 122 7Ah z 027 1Bh Escape 059 3Bh ; 091 5Bh [ 123 7Bh { 028 1Ch Раздел.файла 060 3Ch < 092 5Ch \ 124 7Ch | 029 1Dh Раздел.группы 061 3Dh = 093 5Dh 125 7Dh } 030 1Eh Раздел.записи 062 3Eh > 094 5Eh ^ 126 7Eh ~ 031 1Fh Раздел.единицы 063 3Fh ? 095 5Fh _ 127 7Fh Забой Ассемблер для IBM PC 103 Таблица B-1 Шестнадцатерично-десятичные преобразования +------------+-----------+----------+--------+-------+------+------+-----+ |Ш |Ш |Ш |Ш |Ш |Ш |Ш |Ш | |Е |Е |Е |Е |Е |Е |Е |Е | |С |С |С |С |С |С |С |С | |Т ДЕС |Т ДЕС |Т ДЕС |Т ДЕС |Т ДЕС|Т ДЕС|Т ДЕС|Т ДЕС| +------------+-----------+----------+--------+-------+------+------+-----+ |0 0|0 0|0 0|0 0|0 0|0 0|0 0|0 0| |1 268435456|1 16777216|1 1048576|1 65536|1 4096|1 256|1 16|1 1| |2 536870912|2 33554432|2 2097152|2 131072|2 8192|2 512|2 32|2 2| |3 805306368|3 50331648|3 3145728|3 196608|3 12288|3 768|3 48|3 3| |4 1073741824|4 67108864|4 4194304|4 262144|4 16384|4 1024|4 64|4 4| |5 1342177280|5 83886080|5 5242880|5 327680|5 20480|5 1280|5 80|5 5| |6 1610612736|6 100663296|6 6291456|6 393216|6 24576|6 1536|6 96|6 6| |7 1879048192|7 117440512|7 7340032|7 458752|7 28672|7 1792|7 112|7 7| |8 2147483648|8 134217728|8 8388608|8 524288|8 32768|8 2048|8 128|8 8| |9 2415919104|9 150994944|9 9437184|9 589824|9 36864|9 2304|9 144|9 9| |A 2684354560|A 167772160|A 10485760|A 655360|A 40960|A 2560|A 160|A 10| |B 2952790016|B 184549376|B 11534336|B 720896|B 45056|B 2816|B 176|B 11| |C 3221225472|C 201326592|C 12582912|C 786432|C 49152|C 3072|C 192|C 12| |D 3489660928|D 218103808|D 13631488|D 851968|D 53248|D 3328|D 208|D 13| |E 3758096384|E 234881024|E 14680064|E 917504|E 57344|E 3584|E 224|E 14| |F 4026531840|F 251658240|F 15728640|F 983040|F 61440|F 3840|F 240|F 15| Шест+------------+-----------+----------+--------+-------+------+------+-----+ поз.| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | +------------+-----------+----------+--------+-------+------+------+-----+