- •Глава 1 Введение в семейство персональных компьютеров ibm pc
- •Глава 2 Выполнение программ
- •Глава 3 Требования языка ассемблер
- •Глава 4 Ассемблирование и выполнение программ
- •Глава 5 Определение данных
- •Глава 8 Экранные операции I: Основные свойства
- •Глава 9 Экранные операции II: Расширенные возможности
- •Глава 10 Экранные операции III: Цвет и графика
- •Глава 11 Команды обработки строк
- •Глава 12 Арифметические операции I: Обработка двоичных данных
- •Глава 13 Арифметические операции II:
- •Глава 14 Обработка таблиц
- •Глава 15 Дисковая память I: Организация
- •Глава 16 Дисковая память II: Функции базовой версии dos
- •Глава 17 Дисковая память III: Расширенные функции dos
- •Глава 18 Дисковая память IV: Функции bios
- •Глава 19 Печать
- •Глава 20 Макросредства
- •0000 Csig segment para 'Code'
- •0100 Eb 00 begin: jmp short main
- •0102 Main proc near
- •0109 Main endp
- •0109 Cseg ends
- •20.1. Напишите необходимые директивы: а) для подавления всех команд,
- •04Af в регистр cs. Комбинация этих адресов указывает на первую выполняемую
- •0000 Stacksg segment para stack 'Stack'
- •0000 Codesg segment para 'Code'
- •13D40 плюс 0000. Обратите внимание, что основная программа начинается по
- •0000 Stacksg segment para stack 'Stack'
- •0000 Codesg segment para public 'code'
- •0000 Stacksg segment para stack 'Stack'
- •0000 Codesg segment para public 'code'
- •Ibm Personal Computer Linker
- •0000 Stacksg segment para stack 'Stack'
- •0000 Codesg segment para public 'Code'
- •1. Инициализирующая команда push ds заносит адрес сегмента в стек. Этот
- •010 Clear ,32768!
- •1. Наберите ассемблерную подпрограмму, сохраните ее под именем
- •Ibm Personal Computer Linker
- •Version 2.30 (c) Copyright ibm Corp. 1981, 1985
- •00000H 00011h 00012h codesg code
- •Ibm Personal Computer Basic
- •00 Указатель блока вызывающей программы
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
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