ВУЗ:
Составители:
16
Предпочтительнее определять области данных как обычные переменные Паскаля с
использованием стандартного раздела VAR. Как это делать, было показано
при демонстрации примеров прямой адресации. В дальнейшем для краткости будем
ссылаться на встроенный ассемблер системы Turbo Pascal как на TP-ASM.
5. Примеры разработки программ
А. Работаем с регистрами. Записать во все РОН целое число 5050.
Рассуждаем так. Данное нам число - это константа. Для записи констант в какие-
либо регистры в нашем распоряжении есть команда MOV (Таблица 1). Число 5050
превосходит максимальное значение для байта (255), но меньше максимального значения
для машинного слова (65535). Следовательно, придётся использовать 16-разрядные
регистры. Программа для модели AsmEd будет выглядеть так:
MOV AX, 5050
MOV BX, AX
MOV CX, AX
MOV DX, AX
HLT
Набрав эту программу в редакторе модели, оттранслируем и запустим ее. В регистрах
общего назначения появится изображение константы 5050.
В. Вычисляем арифметическое выражение.
Вычислить выражение (25 * 7 + 137 * 5 - 60) и результат оставить в регистре
AX (для AsmEd) или вывести на экран (для TP-ASM).
Из рассмотрения данного выражения следует, что нам понадобятся команды ADD
(сложить), MUL (умножить), SUB (вычесть), приведённые в Таблице 2, а также MOV
(переслать). Получим сначала произведение 25*7 и сохраним его; затем получим
произведение 137*5 и сложим оба частичных результата; вычтем 60 из того, что
получилось. Приходим к программе:
Для системы AsmEd
MOV AL, 25
MOV DL, 7
MUL DL ; теперь AX = 25*7
MOV BX, AX ; теперь BX = 25*7
MOV AL, 137
MOV DL, 5
MUL DL ; AX = 137*5
ADD AX, BX ; AX = 25*7 + 137*5
SUB AX, 60 ; AX уменьшен на 60
HLT
Для системы TP-ASM
Program Example_B;
Var otvet : Integer;
Begin
Asm
MOV AL, 25
MOV DL, 7
MUL DL
MOV BX, AX
MOV AL, 137
MOV DL, 5
MUL DL
ADD AX, BX
SUB AX, 60
MOV otvet, AX
End;
writeln(otvet); readln
End.
16 Предпочтительнее определять области данных как обычные переменные Паскаля с использованием стандартного раздела VAR. Как это делать, было показано при демонстрации примеров прямой адресации. В дальнейшем для краткости будем ссылаться на встроенный ассемблер системы Turbo Pascal как на TP-ASM. 5. Примеры разработки программ А. Работаем с регистрами. Записать во все РОН целое число 5050. Рассуждаем так. Данное нам число - это константа. Для записи констант в какие- либо регистры в нашем распоряжении есть команда MOV (Таблица 1). Число 5050 превосходит максимальное значение для байта (255), но меньше максимального значения для машинного слова (65535). Следовательно, придётся использовать 16-разрядные регистры. Программа для модели AsmEd будет выглядеть так: MOV AX, 5050 MOV BX, AX MOV CX, AX MOV DX, AX HLT Набрав эту программу в редакторе модели, оттранслируем и запустим ее. В регистрах общего назначения появится изображение константы 5050. В. Вычисляем арифметическое выражение. Вычислить выражение (25 * 7 + 137 * 5 - 60) и результат оставить в регистре AX (для AsmEd) или вывести на экран (для TP-ASM). Из рассмотрения данного выражения следует, что нам понадобятся команды ADD (сложить), MUL (умножить), SUB (вычесть), приведённые в Таблице 2, а также MOV (переслать). Получим сначала произведение 25*7 и сохраним его; затем получим произведение 137*5 и сложим оба частичных результата; вычтем 60 из того, что получилось. Приходим к программе: Для системы AsmEd Для системы TP-ASM MOV AL, 25 Program Example_B; MOV DL, 7 Var otvet : Integer; MUL DL ; теперь AX = 25*7 Begin MOV BX, AX ; теперь BX = 25*7 Asm MOV AL, 137 MOV AL, 25 MOV DL, 5 MOV DL, 7 MUL DL ; AX = 137*5 MUL DL ADD AX, BX ; AX = 25*7 + 137*5 MOV BX, AX SUB AX, 60 ; AX уменьшен на 60 MOV AL, 137 HLT MOV DL, 5 MUL DL ADD AX, BX SUB AX, 60 MOV otvet, AX End; writeln(otvet); readln End.
Страницы
- « первая
- ‹ предыдущая
- …
- 14
- 15
- 16
- 17
- 18
- …
- следующая ›
- последняя »