Jazik_Assemblera_dlja_IBM_PC_i_programmir
.pdfПРИЛОЖЕНИЯ
__________________________________________________________________________
ПРИЛОЖЕНИЕ 1: Коды ASCII-символов
________________________________________________________________
Ниже представлены первые 128 символов ASCII-кода. В руководстве по языку BASIC приведены остальные 128 символов. На помним, что шест.20 представляет стандартный символ пробела.
Таблица 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 Забой |
|
ПРИЛОЖЕНИЕ |
2: |
Шестнадцатерично-десятичные преобразования |
|
|
________________________________________________________________ |
|
|||
В данном |
приложении |
представлены |
приемы преобразования |
между |
шестнадцатеричным и десятичным форматами. |
В первом разделе показан пример |
|||
преобразования шест. A7B8 в десятичное 42936, а во втором - 42936 обратно в шест. A7B8.
Преобразование шестнадцатеричного формата в десятичный
--------------------------------------------------------
Для перевода шест. A7B8 в десятичное число необходимо последовательно, начиная с самой левой шест. цифры (A), умножать на 16 и складывать со следующей цифрой. Так как операции выполняются в десятичном формате, то шест. числа от A до F необходимо преобразовать в десятичные от
10 до 15.
Первая цифра: A (10) |
10 |
Умножить на 16 |
х16 |
|
--- |
Прибавить следующую цифру, 7 |
160 |
+7 |
|
|
--- |
Умножить на 16 |
167 |
х16 |
|
|
---- |
Прибавить следующую цифру, B (11) |
2672 |
+11 |
|
|
---- |
Умножить на 16 |
2683 |
х16 |
|
|
----- |
Прибавить следующую цифру, 8 |
42928 |
+8 |
|
Десятичное значение |
----- |
42936 |
Можно использовать также таблицу преобразования. Для шест. числа A7B8 представим правую цифру (8) как позицию 1, следующую влево цифру (B) как позицию 2, следующую цифру (7) как позицию 3 и самую левую цифру (A) как позицию 4. Из таблицы B-1 выберем значения для каждой шест. цифры:
Для позиции |
1 (8), столбец |
1 |
|
8 |
|
|
|
|
Для позиции |
1 (8), столбец |
1 |
|
176 |
|
|
|
|
Для позиции |
1 (8), столбец |
1 |
|
1792 |
|
|
|
|
Для позиции |
1 (8), столбец |
1 |
|
40960 |
|
|
|
|
Десятичное значение |
|
----- |
|
|
|
|||
|
42936 |
|
|
|
||||
Преобразование десятичного формата в шестнадцатеричный |
|
|||||||
--------------------------------------------------------- |
|
|||||||
Для преобразования десятичного числа |
42936 в шестнадцатеричный формат |
|||||||
необходимо сначала исходное число 42936 |
разделить |
на |
16; |
число, |
||||
получившееся в остатке, (6) |
является младшей |
шестнадцатеричной |
цифрой. |
|||||
Затем полученное частное необходимо снова разделить на |
16 |
и полученный |
||||||
остаток (11 или B) дает следующую влево шестнадцатеричную цифру. Продолжая |
||||||||
таким образом деления до тех пор, пока в частном не получится |
0, |
получим |
||||||
из остатков все необходимые шестнадцатеричные цифры. |
|
|
|
|||||
Частное |
Остаток |
Шест. |
|
|
|
|||
42936 / 16 |
2683 |
8 |
|
8 |
(младшая цифра) |
|
||
2683 / 16 |
167 |
11 |
|
B |
|
|
|
|
167 / 16 |
10 |
7 |
|
7 |
(старшая цифра) |
|
||
10 / 16 |
0 |
10 |
|
A |
|
|||
Для преобразования чисел из десятичного формата в шестнадцатеричный можно также воспользоваться таблицей B-1. Для десятичного числа 42936 необходимо найти в таблице число равное или ближайшее меньшее исходному, и записать соответствующую шестнадцатеричную цифру и ее позицию. Затем следует вычесть найденное десятичное число из 42936 и с полученной разностью проделать проделать ту же операцию:
Дес. Шест.
|
|
Исходное десятичное число |
|
42936 |
A000 |
|
|
|
|||
|
|
Вычесть ближайшее |
меньшее |
|
40960 |
|
|
|
|||
|
|
Разность |
|
|
|
----- |
|
|
|
|
|
|
|
|
меньшее |
|
1976 |
700 |
|
|
|
||
|
|
Вычесть ближайшее |
|
1792 |
|
|
|
||||
|
|
Разность |
|
|
|
---- |
|
|
|
|
|
|
|
|
меньшее |
|
184 |
B0 |
|
|
|
||
|
|
Вычесть ближайшее |
|
176 |
|
|
|
||||
|
|
Разность |
|
|
|
--- |
8 |
|
|
|
|
|
|
|
|
|
8 |
|
|
|
|||
|
|
Результирующее шест. число |
|
---- |
|
|
|
||||
|
|
|
A7B8 |
|
|
|
|||||
|
Таблица B-1. Шестнадцатерично-десятичные преобразования |
¬ |
|||||||||
¦-------------Ш |
|
T----------- |
|
T---------- |
|
T-------- |
T------- |
T------ |
T----- |
T----- |
|
|
¦Ш |
|
¦Ш |
|
¦Ш |
¦Ш |
¦Ш |
¦Ш |
¦Ш |
¦ |
|
¦Е |
|
¦Е |
|
¦Е |
|
¦Е |
¦Е |
¦Е |
¦Е |
¦Е |
¦ |
¦С |
ДЕС |
¦С |
ДЕС |
¦С |
ДЕС |
¦С |
¦С |
¦С |
¦С |
¦С |
¦ |
¦Т |
¦Т |
¦Т |
¦Т |
ДЕС ¦Т |
ДЕС¦Т |
ДЕС¦Т ДЕС¦Т ДЕС¦ |
|||||
+------------ |
|
+----------- |
|
+---------- |
|
+-------- |
+------- |
+------ |
+----- |
+----- |
+ |
¦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 ¦ |
|||||||
L------------ |
|
+----------- |
|
+---------- |
|
+-------- |
+------- |
+------ |
+----- |
+------ |
|
|
Шестнадцатиpичные позиции |
|
|
|
|
|
|
||||
|
ПРИЛОЖЕНИЕ 3: |
|
|
|
Зарезервированные слова |
|
|||||
|
________________________________________________________________ |
|
|||||||||
Большинство из следующих зарезервированных слов при использовании их для определении элементов данных могут привести к ошибкам ассемблирования (в ряде случаев - к весьма грубым):
|
|
Имена регистров |
|
|
||
AH |
BH |
----------------- |
SS |
BP |
||
CH |
DH |
CS |
||||
AL |
BL |
CL |
DL |
DS |
SI |
SP |
AX |
BX |
CX |
DX |
ES |
DI |
|
|
|
Мнемокоды |
|
|
|
AAA |
DIV |
----------- |
OR |
SBB |
|
JLE |
JS |
||||
AAD |
ESC |
JMP |
JZ |
OUT |
SCAS |
AAM |
HLT |
JNA |
LAHF |
POP |
SHL |
AAS |
IDIV |
JNAE |
LDS |
|
POPF |
|
SHR |
|
|
ADC |
IMUL |
JNB |
LEA |
|
PUSH |
|
STC |
|
|
ADD |
IN |
JNBE |
LES |
|
PUSHF |
STD |
|
|
|
AND |
INC |
JNE |
LOCK |
|
RCL |
|
STI |
|
|
CALL |
INT |
JNG |
LODS |
|
RCR |
|
STOS |
|
|
CBW |
INTO |
JNGE |
LOOP |
|
REP |
|
SUB |
|
|
CLC |
IRET |
JNL |
LOOPE |
|
REPE |
|
TEST |
|
|
CLD |
JA |
JNLE |
LOOPNE |
|
REPNE |
WAIT |
|
||
CLI |
JAE |
JNO |
LOOPNZ |
|
REPNZ |
XCHG |
|
||
CMC |
JB |
JNP |
LOOPZ |
|
REPZ |
|
XLAT |
|
|
CMP |
JBE |
JNS |
MOV |
|
RET |
|
XOR |
|
|
CMPS |
JCXZ |
JNZ |
MOVS |
|
ROL |
|
|
|
|
CWD |
JE |
JO |
MUL |
|
ROR |
|
|
|
|
DAA |
JG |
JP |
NEG |
|
SAHF |
|
|
|
|
DAS |
JGE |
JPE |
NOP |
|
SAL |
|
|
|
|
DEC |
JL |
JPO |
NOT |
|
SAR |
|
|
|
|
|
Директивы ассемблера |
|
|
|
|
|
|
||
ASSUME |
---------------------- |
LOCAL |
PURGE |
|
|||||
END |
EXTRN |
IFNB |
|
|
|||||
COMMENT |
ENDIF |
GROUP |
IFNDEF |
|
MACRO |
RECORD |
|
||
DB |
ENDM |
IF |
IF1 |
|
NAME |
|
REPT |
|
|
DD |
ENDP |
IFB |
IF2 |
|
ORG |
|
SEGMENT |
|
|
DQ |
ENDS |
IFDEF |
INCLUDE |
|
OUT |
|
STRUC |
|
|
DT |
EQU |
IFDIF |
IRP |
|
PAGE |
|
SUBTTL |
|
|
DW |
EVEN |
IFE |
IRPC |
|
PROC |
|
TITLE |
|
|
ELSE |
EXITM |
IFIDN |
LABEL |
|
PUBLIC |
|
|
|
|
|
Прочие элементы языка |
|
|
|
|
|
|
||
BYTE |
----------------------- |
PRT |
|
THIS |
|
||||
FAR |
LENGTH |
MOD |
|
|
|
||||
COMMENT |
GE |
LINE |
NE |
|
SEG |
|
TYPE |
|
|
CON |
GT |
LT |
NEAR |
|
SHORT |
WIDTH |
|
||
DUP |
HIGH |
LOW |
NOTHING |
|
SIZE |
|
WORD |
|
|
EQ |
LE |
MASK |
OFFSET |
|
STACK |
|
|
|
|
ПРИЛОЖЕНИЕ 4: |
|
РЕЖИМЫ АССЕМБЛИРОВАНИЯ И КОМПОНОВКИ |
|||||||
________________________________________________________________ |
|||||||||
|
Ассемблирование |
программы |
|
|
|
|
|
||
|
--------------------------- |
две |
версии |
ассемблера: |
|||||
На дискете с ассемблерным |
пакетом |
имеются |
|||||||
ASM.EXE - сокращенная версия, в которой |
отсутствуют некоторые возможности, |
||||||||
и MASM.EXE - полная версия, имеющая |
все |
возможности |
и |
являющаяся |
|||||
предпочтительной. |
Для ассемблирования |
вставьте |
ассемблерную |
дискету в |
|||||
дисковод А, а дискету с исходной программой - |
в |
дисковод |
В. |
Кто |
имеет |
||||
винчестер или RAM-диск (виртуальный диск |
в памяти), могут в следующих |
||||||||
примерах заменить соответствующие номера дисководов. |
Введите команды MASM |
||||||||
(или ASM), что приведет к загрузке программы ассемблера с диска в |
память. |
||||||||
На экране появится: |
|
|
|
|
|
|
|
|
|
source filename [.ASM]: |
|
|
|
|
|
|
|
||
object filename [filename.OBJ]: |
|
|
|
|
|
|
|||
source listing |
[NUL.LST]: |
|
|
|
|
|
|
||
cross-reference [NUL.CRF]:
Курсор при этом расположится в конце первой строки, где необходимо указать имя файла. Введите номер дисковода (если он не определен по умолчанию) и имя файла. Не следует набирать тип файла ASM - ассемблер подразумевает это. Во втором запросе предполагается аналогичное имя файла
(но можно его заменить). Если необходимо, введите номер дисковода. Третий запрос предполагает, что листинг ассемблирования программы не требуется. Последний запрос предполагает, что листинг перекрестных ссылок не требуется. Для получения листинга на дисководе В введите В:.
Если вы хотите оставить значения по умолчанию, то в трех последних запросах просто нажмите Return. Ниже приведен пример запросов и ответов, в результате которых ассемблер должен создать OBJ-, LST- и CRF-файлы на дисководе В:
source filename [.ASM]:B:ASMPROG [Return] object filename [filename.OBJ]:B: [Return] source listing [NUL.LST]:B: [Return] cross-reference [NUL.CRF]:B: [Return]
Альтернативный вариант вызова ассемблера:
MASM B:name.ASM,B:name.OBJ,B:name.LST,B:name.CRF
В следующей команде используются значения по умолчанию:
MASM B:filename,B:,B:,В:;
-первый параметр B:filename идентифицирует исходную программу, которая должна быть ассемблирована;
-второй параметр В: указывает ассемблеру на необходимость записать объектный модуль на дисковод В под именем filename.OBJ;
-третий параметр В: указывает ассемблеру на необходимость
записать листинг ассемблирования на дисковод В |
под |
именем |
filename.LST; |
|
|
-четвертый параметр В: приводит к генерации файла перекрестных ссылок под именем filename.CRF;
-Точка с запятой в конце команды указывает ассемблеру на необходимость игнорировать любые последующие параметры. Хотя в приведенном примере таких параметров нет, кодирование точки с запятой является хорошим правилом для других вариантов команды.
При наличии ошибок ассемблирования программа ASM выдает |
только |
коды |
|
ошибок, которые объяснены в руководстве по Ассемблеру, в |
то время |
как |
|
программа MASM выдает и коды ошибок, и пояснения к ним. |
Всего имеется |
||
около 100 |
сообщений об ошибках. |
|
|
Режимы ассемблирования включают следующие: |
|
|
|
MASM /A |
организовать исходные сегменты в алфавитном порядке; |
|
|
MASM /D |
генерировать LST-файл в обоих проходах ассемблирования; |
|
|
MASM /E |
ассемблировать команды для сопроцессора 8087 и генерировать |
||
MASM /N |
связи для языка ФОРТРАН и пакета эмуляции языка ПАСКАЛЬ; |
|
|
отменить генерацию таблицы идентификаторов; |
|
|
|
MASM /R |
ассемблировать команды для сопроцессора 8087 (аналогично /E); |
||
MASM /S |
сохранить исходные сегменты в оригинальной последовательности. |
||
|
Файл перекрестных ссылок |
|
|
--------------------------
Генерируемый в ходе ассемблирования |
CRF-файл может использоваться для |
|||
создания листинга |
перекрестных ссылок |
на метки, идентификаторы |
и |
|
переменные в программе. Для получения CRF-фала необходимо |
на четвертый |
|||
запрос ассемблера ответить, например. В:, полагая, что файл |
должен |
быть |
||
создан на диске В: |
|
|
|
|
cross-reference [NUL.CRF]:B: [Return]
Для преобразования полученного CRF-файла в удобно отсортированную таблицу перекрестных ссылок используется программа CREF, имеющаяся на ассемблерном диске. Введите команду CREF; на экране появится два запроса:
Cref filename [.CRF]:
List filename [cross-ref.REF]:
На первый запрос введите имя CRF-файла, например B:ASMPROG. На второй запрос можно ввести только номер дисковода и получить имя по умолчанию. Такой выбор приведет к преобразованию CRF-файла в файл перекрестных ссылок по имени filename.REF на дисководе В. Можно также кодировать всю команду в одной строке, например:
CREF В: filename. CRF, CON иди CREF B:filename.CRF,B:
В первом примере файл перекрестных ссылок выводится на экран. Второй пример записывает файл по имени filename.REF на диск В.
Компоновка программ |
|
|
|
|
--------------------- |
дисковод А, |
а |
||
Для компоновки ЕХЕ-программы вставьте дискету DOS в |
||||
дискету с программой - в дисковод В. |
Те, кто имеют винчестер или RAM-диск |
|||
(виртуальный диск в памяти), могут в следующих примерах |
заменить |
|||
соответствующие номера дисководов. |
Простейший способ запуска компоновщика |
|||
представляет ввод команды LINK, что приводит к загрузке |
компоновщика |
с |
||
диска в память. На экране появятся следующие запросы: |
|
|
|
|
Object Modules [.OBJ]:
Run File [d:filename.ЕХЕ]:
List File [NUL.MAP]:
Libraries [.LIB]:
Курсор при этом расположится в конце первой строки, где необходимо указать имя файла. Введите номер дисковода (если он не определен по умолчанию) и имя файла. Не следует набирать тип файла OBJ - компоновщик подразумевает это. Во втором запросе предполагается аналогичное имя файла (но можно его заменить). Если необходимо, введите номер дисковода. Третий запрос предполагает, что листинг компоновки программы не требуется. Последний запрос имеет отношение к библиотечным средствам DOS.
Если вы хотите оставить значения по умолчанию, то в трех последних запросах просто нажмите Return. Ниже приведен пример запросов и ответов, в результате которых компоновщик должен создать файлы ЕХЕ и CON:
Object Modules [.OBJ]:B:ASMPROG [return]
Run File [d:filename.ЕХЕ]:В: [return]
List File [NUL.MAP]:CON [return]
Libraries [.LIB]: [return]
Ответ CON приводит к выводу карты компоновки на экран для проверки на наличие сообщений об ошибках. Команду LINK можно сформировать также следующим образом:
LINK B:ASMPROG,В:,CON |
|
|
Описание остальных режимов компоновщика LINK можно |
найти |
в |
руководстве no DOS. |
|
|
Программа ЕХЕ2ВIN |
|
|
------------------- |
|
для |
Программа EXE2BIN.COM в операционной системе DOS используется |
||
преобразования ЕХЕ-модулей в СОМ-модули, при этом полагается, |
что |
|
программы подготовлены в соответствии с требованиями для СОМ-модулей. |
Для |
|
запуска программы EXE2BIN вставьте дискету DOS в дисковод А, |
а дискету с |
|
ЕХЕ-файлом - в дисковод В. Для винчестерского диска следует |
использовать |
|
дисковод С. Введите следующую команду: |
|
|
EXE2BIN B:filename,B:filename.COM
Первым операндом является имя ЕХЕ-файла, которое вводится без указания типа. Второй операнд представляет собой имя СОМ-файла; здесь можно изменить имя программы, но обязательно следует указывать тип СОМ. После того как преобразование будет выполнено, можно удалить файлы OBJ и ЕХЕ.
Ответы на некоторые вопросы
__________________________________________________________________________
1.1.а) 01001101; в) 00111111.
1.2.а) 0101; в) 10101.
1.3.а) 00100010; в) 00100000.
1.4.а) 11101101; в) 11000110.
1.5.а) 00111000; в) 10000000.
1.6.а) 51; в) 5D.
1.7.а) 23С8; в) 8000.
1.8.а) 13; в) 59; д) FFF.
1.9.а) Стек, данные и код; в) параграф.
1.l0. a) AX, BX, CX, DX, Dl, SI; в) AX и DX; д) флаги.
1.11.a) ROM (постоянная память выполняет процедуры начальной загрузки и управляет операциями ввода-вывода.
б) RAM (оперативная память) представляет собой область, где находятся программы и данные при выполнении.
2.1.а) В82946.
2.2.Е CS:101 54.
2.3. a) MOV |
AX, 3004 |
ADD |
AX,3000 |
RET |
|
в) R и IP устанавливают IP в 0.
2.4. Произведение равно 0612Н.
2.6.Использовать команду N для указания имени программы (например, СОМ), установить длину программы в регистре CX и с помощью команды W записать программу.
3.1.TITLE и PAGE.
3.2.а), б) и в) корректны; г) неверно, так как начинается с цифры; д) корректно только при ссылке на регистр AX.
3.4.a) END; в) ENDS.
3.6.RET является командой, которая обеспечивает возврат в операционную систему; END является директивой, которая указывает ассемблеру, что в тексте более нет команд для ассемблирования.
3.7. ASSUME |
CS:CDSEG,DS:DATSEG,SS:STKSEG. |
3.8. PUSH |
DS |
SUB |
AX, AX |
PUSH |
AX |
4.1.а) Ввести команду MASM и ответить на запросы: В:TEMPY В:, В: и В:
4.2.a) DEBUG B:TEMPY.EXE; б) B:TEMPY
4.3.а) Резервная копия исходного файла; в) файл листинга ассемблирования с исходным и объектным кодом; д) файл объектного кода; ж) карта компоновки.
4.4. MOV |
AX,DATSEG |
MOV |
DS,AX |
4.5. MOV |
AL,30H |
SHL |
AL,1 |
MOV |
BL,18H |
MUL |
BL |
4.6. Сегмент данных должен выглядеть следующим образом: |
||
FLDA |
OB |
28H |
FLDB |
DB |
14H |
FLDC |
DW |
? |
5.1. а) 2; в) 10; д) 8. |
|
||
5.2. |
CONAME |
DB |
'RGB Electronics' |
5.3. a) |
FLDA |
DD |
73H |
в) |
FLDC |
DW |
? |
д) |
FLDE |
DW |
16, 19, 20, 27, 30 |
5.4.a) ASCII 3236; б) 1AH.
5.5.а) 26; в) ЗА732500.
5.6. a) |
MOV |
AX,320 |
в) |
ADD |
BX,40H |
д) |
SHL |
FLDB,1 (или SAL) |
6.1. 64 К.
6.3.Это использует старшую область COM-программы или при недостатке памяти - старшие адреса оперативной памяти.
6.4.EXE2BIN SAMPLE,SAMPLE.COM.
7.1.+127 и -128. Операнд представляет собой однобайтовое значение от 00Н
до 7FH (от 0 до + 127) и от 80Н до 0FFH (от -128 до -1).
7.2.а) 62В; в) 5ЕА (преобразует С6 в двоичное дополнение).
7.3.Приводим одно из многих возможных решений:
MOV AX,00
MOV BX,01
MOV CX,12
MOV DX,00
В20:
ADD |
AX,BX |
;Номер в AX |
MOV |
BX,DX |
|
MOV |
DX,AX |
|
LOOP B20 |
|
|
7.4. а) CMP DX,CX |
в) JCXZ адрес |
д) CMP BX,AX |
JA адрес |
или CMP CX,0 |
JLE или JNG |
|
JZ адрес |
|
7.5. a) OF (1); в) ZF (1); д) DF (1)
7.7.Первая (основная) процедура PROC должна иметь атрибут FAR, так как ее вызов и выполнение происходят из операционной системы. Атрибут NEAR указывает на то, что адрес процедуры находится внутри конкретной программы (т.е. в пределах одного сегмента ассемблерного модуля).
7.9. Три (по одному на каждый вызов CALL).
7.10.а) 1001 1010; в) 1111 1011; д) 0001 1100.
7.12.а) 01011100 11011100; в) 11001101 11001000.
8.1. Строка = 18Н, столбец = 27Н.
8.3. |
MOV |
AX,0600H |
;3апрос |
|
|
MOV |
BH,07 |
|
; функции |
|
MOV |
CX,OCOOH |
; очистки |
|
|
MOV |
DX,164FH |
; экрана |
|
|
INT |
10Н |
|
|
8.4. а) Вызов базовой |
функции DOS: |
|
||
MSSGE |
DB |
'What Is the date (mm/dd/yy)?',07H,'$' |
||
|
MOV |
AH,09 |
;Запрос функции |
|
|
MOV |
DX,MSSGE |
;вывода сообщения |
|
|
INT |
21H |
|
|
8.5. а) Вызов базовой |
функции DOS: |
|
||
|
DATEPAR |
LABEL BYTE |
;Длина области ввода |
|
|
MAXLEN |
DB |
9 |
|
|
ACTLEN |
DB |
? |
|
|
DATEFLD |
DB |
9 DUP(' ') |
|
|
|
DB |
'$' |
;Запрос функции |
|
|
MOV |
AH,0AH |
|
|
|
LEA |
DX,DATEPAR |
; ввода |
|
|
INT |
21H |
|
9.1. a) 1000 0001; в) |
0111 1000. |
|
||
9.2. a) |
MOV |
АН,00 |
;Запрос функции установки режима |
|
MOV |
AL,02 |
; 80х25 BW |
в) |
INT |
10Н |
;3апрос прокрутки на 10 строк |
MOV |
AН,060AН |
||
|
MOV |
BH,07 |
;Нормальный видеоатрибут |
|
MOV |
CX,0000 |
;Полный экран |
|
MOV |
DX,184FH |
|
|
INT |
10Н |
|
9.3. а) 48; в) 47.
9.5. Использовать команду INT 10Н для ввода и проверить скэнкод.
10.1. Восемь цветов для фона и 16 цветов для текста.
10.2.а) 1011 0101; в) 1000 1100.
10.3.Низкое разрешение: четыре бита на пиксел дает 16 цветов. Среднее разрешение: два бита на пиксел дает 4 цвета.
Высокое разрешение: один бит на пиксел дает 2 "цвета" (BW - черно-белое изображение).
10.4. |
MOV |
AH,09 |
;Функция вывода |
|
MOV |
AL,04 |
;Символ |
|
MOV |
BH,00 |
;Страница #0 |
|
MOV |
BL,01011010В |
;Светло-зеленый на сиреневом |
|
MOV |
CX,05 |
;Повторение 5 раз |
|
INT |
10Н |
|
10.6. Сначала установить графический режим, а затем, используя
INT 10Н (AH=0BH),
установить цвет фона.
10.7. Сначала установить графический режим.
MOV |
AH,0DH |
;Прочитать точку |
|
MOV |
CX,13 |
|
;Столбец |
MOV |
DX,12 |
|
;Строка |
INT |
10Н |
|
|
11.1. а) |
JCXZ |
lаbеl2 |
|
label1: MOV |
AX,[SI] |
|
|
|
MOV |
[DI],AX |
|
|
INC |
DI |
|
|
INC |
DI |
|
|
INC |
SI |
|
|
INC |
SI |
|
|
LOOP |
label1 |
|
|
label2: ... |
|
|
|
|
|
|
11.2. Установить флаг направления DF |
для пересылки |
справа |
налево. Для |
||||
команды MOVSB начальная установка на адреса NAME1 + 9 |
олов |
||||||
|
|
LEA |
DI,DAYNAM |
;Адрес пересылки |
|
||
|
|
REP MOVSB |
|
;Переслать 9 |
символов |
|
|
14.3. a) |
ITEMNO |
DB |
|
'06','10','14','21','24' |
|
||
в) |
ITPRICE |
DW |
|
9395,8225,9067,8580,1385 |
|
||
14.4. Возможная организация представлена в следующих процедурах:
Основной цикл |
|
Вызов процедур |
|
В1OREAD |
Выдает на текст запроса и вводит номер элемента. |
||
C10SRCH |
Выполняет поиск в таблице и выдает сообщение об ошибке. |
||
D10MOVE |
Выделяет описание и цену из таблицы. |
||
E10CONV |
Преобразует количество из кода ASCII в двоичное представление. |
||
F10CALC |
Вычисляет стоимость (количество х цена). |
||
G10CONV |
Преобр. стоимость из двоичн. представления в симв. (код ASCII). |
||
K10DISP |
Выводит описание и стоимость на экран. |
||
14.5. |
SORTAB |
DB |
5 DUP(9 DUP(?)) |
LEA |
SI,ITDESC |
;Инициализация |
|
LEA |
01,SORTAB |
; |
адреса таблицы |
MOV |
CX,45 |
; |
и числа символов |
CLD |
|
;Направление слева направо |
|
REP MOVSB |
|
;Переслать таблицу |
|
