File: [NUL.MAP]: CON Libraries [.LIB]: <return> Start Stop Length Name Class 00000H 00022H 0023H CODESG CODE <-- Primechanie: 1 segment koda 00030H 00033H 0004H DATASG DATA 00040H 000BFH 0080H STACKSG STACK Program entry point at 0000:0000 Assembler dlya IBM PC. Programmy. 156 page 60,132 TITLE CALLMUL3 (EXE) Vyzov podprogrammy ; dlya umnozheniya 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 ;Vyzvat' podprogrammu 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 Podprogramma dlya umnozheniya EXTRN QTY:WORD,PRICE:WORD ;------------------------------------------------- 0000 CODESG SEGMENT PARA PUBLIC 'CODE' 0000 SUBMUL PROC FAR ASSUME CS:CODESG PUBLIC SUBMUL Assembler dlya IBM PC. Programmy. 157 0000 A1 0000 E MOV AX,PRICE 0003 8B 1E 0000 E MOV BX,QTY 0007 F7 E3 MUL BX ;Proizvedenie v 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 Assembler dlya IBM PC. Programmy. 158 page 60,132 TITLE CALLMULL4 (EXE) Peredacha parametrov ; v podprogrammu 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 ;Vyzvat' podprogrammu 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 Vyzyvaemaya podprogramma umnozheniya 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 Assembler dlya IBM PC. Programmy. 159 0003 8B 46 08 MOV AX,[BP+8] ;Stoimost' 0006 8B 5E 06 MOV BX,[BP+6] ;Kolichestvo 0009 F7 E3 MUL BX ;Proizvedenie v 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 Assembler dlya IBM PC. Programmy. 160 LOAD"D:BASTEST.BAS LIST 010 CLEAR ,32768! 020 ' dlya BLOAD 030 ' dlya DEFSEG 040 ' dlya tochki vhoda v CALL 050 ' dlya vyzova ASM-modulya 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 Assemblernaya podprogramma, vyzyvaemaya iz BASIC CODESG SEGMENT PARA 'CODE' ASSUME CS:CODESG CLRSCRN PROC FAR PUSH BP ;Sohranit' BP MOV BP,SP ;Baza spiska parametrov MOV AX,0600H ;Funkciya prokrutki MOV BH,07 ; vsego MOV CX,0000 ; ekrana MOV DX,184FH INT 10H POP BP RET ;Zavershit' podprogrammu CLRSCRN ENDP CODESG ENDS END Assembler dlya IBM PC. Programmy. 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 Assembler dlya IBM PC. Programmy. 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 Podprogramma na assemblere, ; vyzyvaemaya iz programmy na Paskale PUBLIC MOVE_CURSOR ;---------------------------------------------------------- ; MOVE_CURSOR: Ustanavlivaet kursor ; po peredannym parametram ; Parametry: const row Stroka i stolbec ; const col dlya ustanovki kursora ; Vozvrashchaemoe znachenie: Otsutstvuet ;---------------------------------------------------------- CODESEG SEGMENT PARA PUBLIC 'CODE' MOVE_CURSOR PROC FAR ASSUME CS:CODESEG Assembler dlya IBM PC. Programmy. 163 ROWWPAR EQU 8 ;Parametr "stroka" COLPAR EQU 6 ;Parametr "stolbec" PUSH BP ;Sohranit' registr BP MOV BP,SP ;Ustanovit' BP na parametry MOV SI,[BP+ROWPAR] ;SI ukazyvaet na stroku MOV DH,[SI] ;Pomestit' stolbec v DL MOV AH,02 ;Funkciya ustanovki kursora SUB BH,BH ;Stranica #0 INT 10H POP BP ;Vernut'sya RET 4 ; v vyzyvayushchuyu programmu MOVE_CURSOR ENDP CODESEG ENDS END Adres nachala Programma 00000 Tablica vektorov preryvanij (sm. gl. 23) 00400 Oblast' svyazi s postoyannoj pamyat'yu (ROM) 00500 Oblast' svyazi s operacionnoj sistemoj (DOS) 00600 IBMBIO.COM Bufer kataloga Diskovyj bufer Blok parametrov diskovoda/tablica raspredeleniya fajlov (FAT, odna dlya kazhdogo diskovoda) XXXX0 Rezidentnaya chast' komandnogo processora COMMAND.COM XXXX0 Oblast' pamyati dlya programm (tipa COM ili EXE) XXXX0 Pol'zovatel'skij stek dlya COM-programm (256 bajtov) XXXX0 Tranzitnaya chast' komandnogo processora COMMAND.COM (zapisyvaetsya v starshie adresa pamyati). TITLE EXDOS (EXE) Funkciya DOS 4BH dlya vypolneniya DIR CSEG GMENT PARA 'Code' ASSUME CS:CSEG,DS:CSEG,ES:CSEG BEGIN: JMP SHORT MAIN ;---------------------------------------------------------- PARAREA DW ? ;Adres stroki vyzova Assembler dlya IBM PC. Programmy. 164 DW OFFSET DIRCOM ;Ukazatel' ; na komandnuyu stroku DW CSEG DW OFFSET FCB1 ;Ukazatel' na 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 ;Poluchit' 64K pamyati MOV BH,100H ; v paragrafah INT 21H JC E10ERR ;Net pamyati? MOV DI,2CH ;Poluchit' segmentnyj adres MOV AX,[DI] ; stroki vyzova LEA SI,PARAREA ; i zapisat' ego v MOV [SI],AX ; 1 slovo bloka parametrov MOV AX,CS ;Zagruzit' v DS i ES MOV DS,AX ; adres CSEG MOV ES,AX MOV AH,4BH ;Funkciya zagruzki MOV AL,00 ; i vypolneniya LEA BX,PARAREA ; COMMAND.COM LEA DX,PROGNAM INT 21H ;Vyzvat' DOS JC E20ERR ;Oshibka vypolneniya? MOV AL,00 ;Net koda oshibki JMP X10XIT 0ERR: MOV AL,01 ;Kod oshibki 1 JMP X10XIT 0ERR: MOV AL,02 ;Kod oshibki 2 JMP X10XIT 0XIT: MOV AH,4CH ;Funkciya zaversheniya INT 21H ;Vyzvat' DOS IN ENDP EG ENDS END Adres Funkciya preryvaniya (shest.) (shest.) 0-3 0 Delenie na nol' 4-7 1 Poshagovyj rezhim (trassirovka dlya DEBUG) Assembler dlya IBM PC. Programmy. 165 8-B 2 Nemaskiruemoe preryvanie (NMI) C-F 3 Tochka ostanova v potoke komand (dlya DEBUG) 10-13 4 Perepolnenie registrov ALU 14-17 5 Pechat' ekrana 18-1F Zarezervirovano 20-23 8 Signal ot tajmera 24-27 9 Signal ot klaviatury 28-37 A,B,C,D Ispol'zuyutsya dlya AT 38-3B E Signal ot diskovoda 3C-3F F Obsluzhivanie printera 40-43 10 Upravlenie ekranom (sm. gl. 8,9,10) 44-47 11 Zapros spiska oborudovaniya (sm. gl. 9) 48-4B 12 Zapros razmera fizicheskoj pamyati (sm. gl. 2) 4C-4F 13 Upravlenie diskovym vvodom-vyvodom (gl. 18) 50-53 14 Upravlenie kommunikacionnym vvodom-vyvodom 54-57 15 Upravlenie magnitofonom i spec.funkcii dlya AT 58-5B 16 Upravlenie vvodom s klaviatury (gl. 9) 5C-5F 17 Vyvod na printer (gl. 19) 60-63 18 Obrashchenie k BASIC v PZU (ROM) 64-67 19 Perezagruzka sistemy 68-6B 1A Zapros i ustanovka vremeni i daty 6C-6F 1B Poluchenie upravleniya po preryvaniyu s klaviatury 70-73 1C Poluchenie upravleniya po preryvaniyu ot tajmera 74-77 1D Adres tablicy parametrov inicializacii displeya 78-7B 1E Adres tablicy parametrov diskovoda 7C-7F 1F Adres tablicy graficheskih simvolov 80-83 20 DOS Normal'noe zavershenie programmy 84-87 21 DOS Obrashchenie k funkciyam DOS 88-8B 22 DOS Adres podprogrammy obrabotki zaversheniya 8C-8F 23 DOS Adres podprogrammy reakcii na Ctrl+Break 90-93 24 DOS Vektor podprogrammy reakcii na fatal'nuyu oshibku 94-97 25 DOS Absolyutnoe chtenie sektorov diska 98-9B 26 DOS Absolyutnaya zapis' na sektora diska 9C-9F 27 DOS Zavershenie programmy, ostavlyayushchee ee rezidentom A0-FF 28-3F DOS Operacii DOS 100-1FF 40-7F Zarezervirovano 200-217 80-85 Zarezervirovano dlya BASIC 218-3C3 86-F0 Ispol'zuetsya BASIC-interpretatorom 3C4-3FF F1-FF Zarezervirovano Primechanie: preryvaniya 00-1F dlya BIOS, 20-FF dlya DOS i BASIC TITLE RESIDENT (COM) Rezidentnaya programma dlya ochistki ; ekrana i ustanovki cveta pri nazhatii ; Alt+Left Shift ;---------------------------------------------------------- INTTAB SEGMENT AT 0H ;Tablica vektorov preryvanij: ORG 9H*4 ; adres dlya Int 9H, KBADDR LABEL DWORD ; dvojnoe slovo INTTAB ENDS Assembler dlya IBM PC. Programmy. 166 ;---------------------------------------------------------- ROMAREA SEGMENT AT 400H ;Oblast' parametrov BIOS: ORG 17H ; adres flaga klaviatury, KBFLAG DB ? ; sostoyanie Alt + Shift ROMAREA ENDS ;---------------------------------------------------------- CSEG SEGMENT PARA ;Segment koda ASSUME CS:CS ORG 100H BEGIN: JMP INITZ ;Vypolnyaetsya tol'ko odin raz KBSAVE DD ? ;Dlya adresa INT 9 BIOS ; Ochistka ekrana i ustanovka cvetov: ; --------------------------------- COLORS PROC NEAR ;Procedura vypolnyaetsya PUSH AX ; pri nazhatii Alt+Left Shift PUSH BX PUSH CX ;Sohranit' registry PUSH DX PUSH SI PUSH DI PUSH DS PUSH ES PUSHF CALL KBSAV ;Obrabotat' preryvanie ASSUME DS:ROMAREA MOV AX,ROMAREA ;Ustanovit' DS dlya MOV DS,AX ; dostupa k sostoyaniyu MOV AL,KB AG ; Alt+Left Shift CMP AL,00001010B ;Alt+Left Shift nazhaty? JNE EXIT ; net - vyjti MOV AX,0600H ;Funkciya prokrutki MOV BH,61H ;Ustanovit' cvet MOV CX,00 MOV DX,18 FH INT 10H EXIT: POP ES ;Vosstanovit' registry POP DS POP DI POP SI POP DX POP CX POP BX POP AX IRET ;Vernut'sya COLORS ENDP ; Podprogramma inicializacii: ; -------------------------- INITZE PROC NEAR ;Vypolnyat' tol'ko odin raz Assembler dlya IBM PC. Programmy. 167 ASSUME DS:INTTAB PUSH DS ;Obespechit' vozvrat v DOS MOV AX,INTTAB ;Ustanovit' segment dannyh MOV DS,AX CLI ;Zapretit' preryvaniya ;Zamena adresa obrabotchika: MOV AX,WORD PTR KBADDR ;Sohranit' adres MOV WORD PTR KBSAVE,AX ; BIOS MOV AX,WORD PTR BADDR+2 MOV WORD PTR KBSAVE+2,AX MOV WORD PTR KBADDR,OFFSET COLORS ;Zamenit' MOV WORD PTR KBADDR+2,CS ; adres BIOS STI ;Razreshit' preryvaniya MOV DX,OFFSET INITZE ;Razmer programmy INT 27H ;Zavershit' i ostat'sya INITZE ENDP ; rezidentom CSEG ENDS END BEGIN TITLE SOUND (COM) Procedura dlya generacii zvuka SOUNSG SEGMENT PARA 'Code' ASSUME CS:SOUNG,DS:SOUNG,SS:SOUNG ORG 100H BEGIN: JMP SHORT MAIN ; ------------------------------------------------------- DURTION DW 1000 ;Vremya zvuchaniya TONE DW 256H ;Vysota (chastota) zvuka ; ------------------------------------------------------- MAIN PROC NEAR IN AL,61H ;Poluchit' i sohranit' PUSH AX ; dannye porta CLI ;Zapretit' preryvaniya CALL B10SPKR ;Proizvesti zvuk POP AX ;Vosstanovit' znachenie OUT 61H,AL ; porta STI ;Razreshit' preryvaniya RET MAIN ENDP B10SPKR PROC NEAR B20: MOV DX,DURTION ;Ustanovit' vremya zvuchaniya B30: AND AL,11111100B ;Ochistit' bity 0 i 1 OUT 61H,AL ;Peredat' na dinamik MOV CX,TONE ;Ustanovit' chastotu B40: LOOP B40 ;Zaderzhka vremeni OR AL,00000010B ;Ustanovit' bit 1 OUT 61H,AL ;Peredat' na dinamik MOV CX,TONE ;stanovit' chastotu Assembler dlya IBM PC. Programmy. 168 B50: LOOP B50 ;Zaderzhka vremeni DEC DX ;Umen'shit' vremya zvuchaniya JNZ B30 ;Prodolzhat'? SHL DURTION,1 ; net - uvelichit' vremya, SHR TONE,1 ; sokratit' chastotu JNZ B20 ;Nulevaya chastota? RET ; da - vyjti B10SPKR ENDP SOUNSG ENDS END BEGIN Assembler dlya IBM PC 98 TITLE RECORD (COM) Proverka direktivy 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 ;Opredelit' zapis' 0102 9A AD DEFBITS BITREC <101B,0110110B,011010B> ;Inicializirovat' bity ; ----------------------------------------------------- 0104 MAIN PROC NEAR 0104 A10: ;SHirina: 0104 B7 10 MOV BH,WIDTH BITREC ; zapisi (16) 0106 B0 07 MOV AL,WIDTH BIT2 ; polya (07) 0108 B10: ;Velichina sdviga: 0108 B1 0D MOV CL,BIT1 ; shest.0D 010A B1 06 MOV CL,BIT2 ; 06 010C B1 00 MOV CL,BIT3 ; 00 010E C10: ;Maska: 010E B8 E000 MOV AX,MASK BIT1 ; shest.E000 0111 BB 1FC0 MOV BX,MASK BIT2 ; 1FC0 0114 B9 003F MOV CX,MASK BIT3 ; 003F 0117 D10: ;Vydelenie BIT2: 0117 A1 0102 R MOV AX,DEFBITS ; poluchit' zapis', 011A 25 1FC0 AND AX,MASK BIT2 ; ochistit' BIT1 i BIT3, 011D B1 06 MOV CL,BIT2 ; poluchit' sdvig 06, 011F D3 E8 SHR AX,CL ; sdvinut' vpravo 0121 E10: ;Vydelenie BIT1: 0121 A1 0102 R MOV AX,DEFBITS ; poluchit' zapis', 0124 B1 0D MOV CL,BIT1 ; poluchit' sdvig 13, 0126 D3 E8 SHR AX,CL ; sdvinut' vpravo 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 Assembler dlya 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 Assembler dlya IBM PC 100 TITLE DSTRUC (COM) Opredelenie struktury 0000 CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,SS:CODESG 0100 ORG 100H 0100 EB 29 BEGIN: JMP SHORT MAIN ; --------------------------------------------- PARLIST STRUC ;Spisok parametrov 0000 19 MAXLEN DB 25 ; 0001 ?? ACTLEN DB ? ; 0002 19 [ 20 ] NAMEIN DB 25 DUP(' ') ; 001B PARLIST ENDS ; 0102 19 PARAMS PARLIST <> ;Oblast' struktury 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 ;Vydat' zapros 012D 8D 16 011D R LEA DX,PROMPT 0131 CD 21 INT 21H 0133 B4 0A MOV AH,0AH ;Poluchit' vvod 0135 8D 16 0102 R LEA DX,PARAMS 0139 CD 21 INT 21H 013B A0 0103 R MOV AL,PARAMS.ACTLEN ;Dlina vvoda ; ... 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 Assembler dlya IBM PC 101 Osnovnye, bazovye i indeksnye registry: Bity: 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 Bity: Segmentnyj registr: 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 Assembler dlya IBM PC 102 Tablica A-1 Nabor ASCII simvolov Des SHest Simv Des SHest Simv Des SHest Simv Des SHest Simv 000 00h Nul' 032 20h sp 064 40h @ 096 60h ` 001 01h Nachalo zagolovka 033 21h ! 065 41h A 097 61h a 002 02h Nachalo teksta 034 22h " 066 42h B 098 62h b 003 03h Konec teksta 035 23h # 067 43h C 099 63h c 004 04h Konec peredachi 036 24h $ 068 44h D 100 64h d 005 05h KTM 037 25h % 069 45h E 101 65h e 006 06h Da 038 26h & 070 46h F 102 66h f 007 07h Zvonok 039 27h ' 071 47h G 103 67h g 008 08h Vozvrat na shag 040 28h ( 072 48h H 104 68h h 009 09h Goriz.tabulyaciya 041 29h ) 073 49h I 105 69h i 010 0Ah Perevod stroki 042 2Ah * 074 4Ah J 106 6Ah j 011 0Bh Vert.tabulyaciya 043 2Bh + 075 4Bh K 107 6Bh k 012 0Ch Perevod stranicy 044 2Ch , 076 4Ch L 108 6Ch l 013 0Dh Vozvrat karetki 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 Upravlenie 1 049 31h 1 081 51h Q 113 71h q 018 12h Upravlenie 2 050 32h 2 082 52h R 114 72h r 019 13h Upravlenie 3 051 33h 3 083 53h S 115 73h s 020 14h Upravlenie 4 052 34h 4 084 54h T 116 74h t 021 15h Net 053 35h 5 085 55h U 117 75h u 022 16h Sinhronizaciya 054 36h 6 086 56h V 118 76h v 023 17h Konec bloka 055 37h 7 087 57h W 119 77h w 024 18h Anulirovanie 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 Zamena 058 3Ah : 090 5Ah Z 122 7Ah z 027 1Bh Escape 059 3Bh ; 091 5Bh [ 123 7Bh { 028 1Ch Razdel.fajla 060 3Ch < 092 5Ch \ 124 7Ch | 029 1Dh Razdel.gruppy 061 3Dh = 093 5Dh 125 7Dh } 030 1Eh Razdel.zapisi 062 3Eh > 094 5Eh ^ 126 7Eh ~ 031 1Fh Razdel.edinicy 063 3Fh ? 095 5Fh _ 127 7Fh Zaboj Assembler dlya IBM PC 103 Tablica B-1 SHestnadcaterichno-desyatichnye preobrazovaniya +------------+-----------+----------+--------+-------+------+------+-----+ |SH |SH |SH |SH |SH |SH |SH |SH | |E |E |E |E |E |E |E |E | |S |S |S |S |S |S |S |S | |T DES |T DES |T DES |T DES |T DES|T DES|T DES|T DES| +------------+-----------+----------+--------+-------+------+------+-----+ |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| SHest+------------+-----------+----------+--------+-------+------+------+-----+ poz.| 8 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | +------------+-----------+----------+--------+-------+------+------+-----+