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



       

ГЛАВА 23. Прерывания BIOS и DOS - часть 12


CODESG SEGMENT PARA 'CODE' BEGIN PROC FAR 1. ASSUME CS:CODESG,DS:DATASG,SS:STACKG 2. PUSH DS ;Записать DS в стек 3. SUB AX,AX ;Установить ноль в AX PUSH AX ;Записать ноль в стек

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

4. MOV AX,DATASG ;Занести адрес MOV DS,AX ; DATASG в DS . . . 5. RET ;Возврат в DOS BEGIN ENDP CODESG ENDS END BEGIN

page 60,132 TITLE EXASM1 (EXE) Пример регистровых операций ;------------------------------------------------ STACKSG SEGMENT PARA SACK 'Stack' DB 12 DUP('STACKSEG') STACKSG ENDS ;------------------------------------------------ CODESG SEGMENT PARA 'Code' BEGIN PROC FAR ASSUME SS:STACKSG,CS:CODESG,DS:NOTHING PUSH DS ;Записать DS в стек SUB AX,AX ;Записать ноль PUSH AX ; в стек

MOV AX,0123H ;Записать шест.0123 в AX ADD AX,0025H ;Прибавить шест.25 к AX MOV BX,AX ;Переслать AX в BX ADD BX,AX ;Прибавить BX к AX MOV CX,BX ;Переслать BX в CX SUB CX,AX ;Вычесть AX из CX SUB AX,AX ;Очистить AX NOP RET ;Возврат в DOS BEGIN ENDP ;Конец процедуры

CODESG ENDS ;Конец сегмента END BEGIN ;Конец программы

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

1 page 60,132 2 TITLE EXASM1 (EXE) Пример регистровых операций 3 ;------------------------------------------------ 4 0000 STACKSG SEGMENT PARA SACK 'Stack' 5 0000 0C [ DB 12 DUP('STACKSEG') 6 53 54 41 43 7 4B 53 45 47 8 ] 9 10 0060 STACKSG ENDS 11 ;------------------------------------------------- 12 0000 CODESG SEGMENT PARA 'Code' 13 0000 BEGIN PROC FAR 14 ASSUME SS:STACKSG,CS:CODESG,DS:NOTHING 15 0000 1E PUSH DS ;Записать DS в стек 16 0001 2B C0 SUB AX,AX ;Записать ноль 17 0003 50 PUSH AX ; в стек 18 19 0004 B8 0123 MOV AX,0123H ;Записать шест.0123 в AX 20 0007 05 0025 ADD AX,0025H ;Прибавить шест.25 к AX 21 000A 8B D8 MOV BX,AX ;Переслать AX в BX 22 000C 03 D8 ADD BX,AX ;Прибавить BX к AX 23 000E 8B CB MOV CX,BX ;Переслать BX в CX 24 0010 2B C8 SUB CX,AX ;Вычесть AX из CX 25 0012 2B C0 SUB AX,AX ;Очистить AX 26 0014 90 NOP 27 0015 CB RET ;Возврат в DOS 28 0016 BEGIN ENDP ;Конец процедуры 29 30 0016 CODESG ENDS ;Конец сегмента 31 END BEGIN ;Конец программы -------------------------------------------------------------------------- Segments and Groups: N a m e Size Align Combine Class CODESG . . . . . . . . . . . . 0016 PARA NONE 'CODE' STACKSG. . . . . . . . . . . . 0060 PARA STACK 'STACK'




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