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



       

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


0100 MAIN PROC NEAR 0100 B8 0001 MOV AX,01 ;Инициализация AX, 0103 BB 0001 MOV BX,01 ; BX, 0106 B9 0001 MOV CX,01 ; и CX 0109 A20: 0109 05 0001 ADD AX,01 ;Прибавить 01 к AX 010C 03 D8 ADD BX,AX ;Прибавить 01 к BX 010E D1 E1 SHL CX,1 ;Удвоить CX 0110 EB F7 JMP A20 ;Переход на A20 0112 MAIN ENDP 0112 CODESG ENDS END MAIN

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

page 60,132 TITLE EXLOOP (COM) Организация цикла командой LOOP 0000 CODESG SEGMENT PARA 'Code' ASSUME CS:CODESG,DS:CODESG,SS:CODESG 0100 ORG 100H

0100 BEGIN PROC NEAR 0100 B8 0001 MOV AX,01 ;Инициализация AX, 0103 BB 0001 MOV BX,01 ; BX, 0106 BA 0001 MOV DX,01 ; и DX 0109 B9 000A MOV CX,10 ;Число циклов 010C A20: 010C 40 INC AX ;Прибавить 01 к AX 010D 03 D8 ADD BX,AX ;Прибавить AX к BX 010F D1 E2 SHL DX,1 ;Удвоить DX 0111 E2 F9 LOOP A20 ;Уменьшить CX и повторить ; цикл, если ненуль 0113 C3 RET ;Завершить работу 0114 BEGIN ENDP 0114 CODESG ENDS END BEGIN

+-------------------------+ | CODESG SEGMENT PARA | +-------------------------+ | BEGIN PROC FAR | | . | | . | | CALL B10 | | CALL C10 | | RET | | BEGIN ENDP | +-------------------------+ | B10 PROC NEAR | | . | | . | | RET | | B10 ENDP | +-------------------------+ | C10 PROC NEAR | | . | | . | | RET | | C10 ENDP | +-------------------------+ | CODESG ENDS | | END BEGIN | +-------------------------+

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

TITLE CALLPROC (EXE) Вызов процедур 0000 STACKSG SEGMENT PARA STACK 'Stack' 0000 20 [ ???? ] DW 32 DUP(?) 0040 STACKG ENDS

0000 CODESG SEGMENT PARA 'Code' 0000 BEGIN PROC FAR ASSUME CS:CODESG,SS:STACKSG 0000 1E PUSH DS 0001 2B C0 SUB AX,AX 0003 50 PUSH AX 0004 E8 0008 R CALL B10 ;Вызвать B10 ; ... 0007 CB RET ;Завершить программу 0008 BEGIN ENDP ;-------------------------------------- 0008 B10 PROC 0008 E8 000C R CALL C10 ;Вызвать C10 ; ... 000B C3 RET ;Вернуться в 000C B10 ENDP ; вызывающую программу ;---------------------------------------------- 000C C10 PROC ; ... 000C C3 RET ;Вернуться в 000D C10 ENDP ; вызывающую программу ;---------------------------------------------- 000D CODESG ENDS END BEGIN




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