Структура безадресных команд — КиберПедия 

Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Структура безадресных команд

2020-04-01 139
Структура безадресных команд 0.00 из 5.00 0 оценок
Заказать работу

Некоторые из команд не требуют задания адреса, например, команда СТОП (Halt) для процессора. В случае использования команд с данными можно использовать стек для хранения данных, в этом случае адреса данных можно не задавать. Стек - это массив, заполнение и извлечение данных для которого выполняется по правилу "Первый вошел, последний вышел". В этом случае данные для операции записываются в стек. Результат помещается вместо этих данных.

Для упрощения распределения памяти и запоминания кодов команд вместо машинных кодов используются их обозначения, а вместо конкретных адресов - символические адреса. Символические коды для основных операций заданы в табл. 4.1

 

Таблица 4.1 Мнемонические коды арифметических команд

Код Обозначение
01 (+) ADD
02 (-) SUB
03 (*) MUL
04 (/) DIV

Пусть данные занимают ячейки

+ 0: X+ 1: Y+ 2: Z+ 3: U+ 4: V + 5: W

 

Пусть программа занимает ячейки P + 0, P + 1, …

Пусть в качестве ячеек для промежуточных данных используются R + 0, R + 1, …

Текст программы с учетом принятых обозначений задан в табл. 5.1.

 

Таблица 5.1. Текст программы

Адрес Код 1 данное 2 данное Результат Комментарий
P+0 ADD D+0 D+1 R+0 X + Y ®R+0
P+1 SUB R+0 D+2 R+1 X+Y-Z®R+1
P+2 MUL R+1 D+3 R+1 (X+Y-Z)*U®R+1
P+3 ADD R+! D+4 R+1 (X+Y-Z)*U + V®R+1
P+4 DIV R+1 R+0 D+5 Результат

 

Пусть D= 0. В этом случае программа начинается с ячейки после D + 5, т.е. с ячейки 6. (P = 6). Промежуточные данные можно располагать, начиная с P + 5, т.е. R = 11. Преобразование кодов и адресов в машинные коды и адреса выполняется специальной программой.

Язык, в котором вместо машинных кодов используются их символические обозначения, а вместо абсолютных - относительные адреса, называется языком символического кодирования или ассемблером.

 


3. Определения которые будут встречаться в программе

язык ассемблер программа алгоритм

Tiny (файл *.com). модель памяти. При этом регистры CS, DS, SS содержат одинаковых значений. Это наиболее компактная модель памяти. Размер памяти не может превышавать 63Кб. Адресация происходит с помочью смещения и меток. Так как программы на ассемблере не большая, то это не есть большим ограничением. Эта модель широко используется, особливо в резидентных программах.-- длина строки ввода (5 символов)-- структура для строкового ввода (исп.в функции 0Ah прерывания 21h)

Данные:-- строка приглашения ввода данных_A / Msg_K -- ->>- ->>- ввода значения основания / степени_Res -- строка приглашения вывода числа-- последовательность перехода на новою строку_A / Str_K -- структура для хранения текстового значения основания / степени_A / Int_K -- ячейки памяти размерности СЛОВО для хранения двоичного значения основания / степени_Pow -- строка хранящая текстовое представление вычисленной степенной функции

Процедуры:

Процедура ожидания нажатия любой клавиши на клавиатуре

Процедура отображения строкового сообщения на экране (до символа '$').

В DS:DX передается адрес выводимой на экран строки.

Символ с кодом 13 (0Dh) осуществляет переход на начало строки.

Символ с кодом 10 (0Ah) осуществляет переход на новую строку.

Процедура ввода данных со клавиатуры в строковой буфер с ограничением длины ввода. В DS:DX передается адрес структуры ввода (см. определение структуры string)

Процедура проверки являются ли все символы строки десятичными цифрами. Уст. флаг CF при ошибке. Адрес строки для проверки в SI.I2

Процедура преобразования числа размерности в слово из строкового вида в двоичный. При выходе за границы размерности уст. флаг CF.

Адрес строки для проверки в SI. Результат в AX.Str

Процедура преобразования числа из двоичного вида в строковый.

Исходное число в регистровой паре BX:AX, сохранение в строку с адресом в SI.

Процедура возведения числа с основанием в SI в степень со значением в CX.

Результат сохраняется в регистровой паре BX:AX.

 


Руководство пользователя

 

Установка программы и запуск программы

 

Для работы с программой необходимо выполнить следующие шаги:

·   скопировать в какой-либо каталог файл power.exe;

·   запустить программу

Работа с программой

 

·   Вводим значение полевого элемента A.

·   Вводим значение степенного элемента k.

·   Получаем результат.

4.3 Системные требования

 

Для нормальной работы данной программы требуется IBM:

·   8086, 80186, 80286, 80386, 80486, Р5 (Pentium), MMX, P6 (Pentium Pro и Pentium II).

·   любая ОЗУ;

· видеокарта SuperVGA;

·   операционная система MS DOS.

 


5. Пример выполненной программы

 

Пример на С++:

=A^k

А=128 Temp: 0.005cek=3

2097152.

 

Пример на ассемблере:

 A ^ k

Enter A: 128 Temp: 0.001cekk: 3: 2097152

 


Заключение

 

В процессе курсовой работы была изучена техника программирования на языке ассемблер. В качестве системы программирования была использована MS DOS. В сравнительной характеристике с кодом С++, асемблерский код показал не значительно, но меньшее время выполнения задачи. Значит, язык ассемблер может использоваться в тех случаях, когда надо повысить скорость выполнения программ.

 


Список использованной литературы

 

.Конспект лекций с курса программирования на языке ассемблер;

.Глобальная сеть Internt;

. Абель - Ассемблер Для Ibm Pc;

4. IEEE P1363 / D13 (Draft Version 13). Standard Specifications for Public Key Cryptography.

 


Приложение А

 

//---------------------------------------------------------------------------

#include <vcl.h>

#include <iostream.h>

#include <conio.h>

#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsusedmain()

{A;int k;<<"Y=A^x"<<endl;<<"Put A: ";>>A;<<"Put k: ";>>k;r=0;long int Buffer=k;(Buffer){Buffer>>=1;r++;}-;=A;Mask=1;(int i=0;i<r-1;i++)Mask<<=1;(Mask)

{*=Buffer;(k&Mask)Buffer*=A;>>=1;

}<<Buffer;();

}

//---------------------------------------------------------------------------

 


Приложение В

 

;--------------------------------------------------------------------------

.model tiny

;--------------------------------------------------------------------------

.stack 100h

;--------------------------------------------------------------------------equ 5strucdb strlen+1dbdb strlen+1 dup (?)ends

;--------------------------------------------------------------------------

.data

;--------------------------------------------------------------------------db 13,10,"Operation: A ^ k",13,10,13,10,"$"_A db " ",13,"Enter A: ","$"_K db " ",13,"Enter k: ","$"_Res db 13,10,"Result: ","$"db 13,10,"$"_A string <>_K string <>_A dw 0_K dw 0_Pow db 16 dup (0)

;--------------------------------------------------------------------------

.code

;--------------------------------------------------------------------------procah,0;иначе - прочитать клавишуendp

;--------------------------------------------------------------------------proc;[IN] DS:DX - adress of string with forwarding '$'

mov ah,9; Функция DOS 09h

inth; вывести строку на экран

retnendp

;--------------------------------------------------------------------------proc;[IN] DS:DX - adress of string structure ah,0Ah;осуществляет переход на новую строку

inthendp

;--------------------------------------------------------------------------I2 proc;[IN] SI - string type, [OUT] AX - value; CF - if falsech,chcl,[si].lendi,[si].valax,axbx,10

@@1:bxdx,0@@2dl,[di]dl,0Fhax,dx@@2di@@1

@@2:I2 endp

;--------------------------------------------------------------------------proc;[IN] SI - string type; [OUT] CF - if falsech,chcl,[si].lendi,[si].val

@@1:byte ptr [di],'9'@@2byte ptr [di],'0'@@2di@@1

@@2:endp

;--------------------------------------------------------------------------Str proc;[IN] BX:AX - number; SI - string to save ($)si

@@1:axdx,dxax,bxcx,10000cxbx,ax;<- 1 chastnoe v bxaxcxaxax,dx cx,4;<- 4 cyfry@@Paxax,0@@1bx,0@@1

@@2:sibyte ptr [si],'0'@@2disicx,sicx,dicx,1@@4

@@3:al,[si]ah,[di][si],ah[di],aldisi@@3

@@4:sisibyte ptr [si],'$'

@@P:dx,dxdi,10didl,30h[si],dlsi@@PStr endp

;--------------------------------------------------------------------------proc;[IN] SI - base; CX - power [OUT] BX:AX - numberax,axdx,dxsi,0@@exit

;bx,cxcx,15

@@0:bx,1@@1@@0

@@1:ax,si;x=a

@@2:ax;x=x*xbx,1;ki == 1?@@3;no -> jumpsi;x=a*x

@@3:@@2

;

@@exit:bx,dxendp

;--------------------------------------------------------------------------:ax,@datads,axdx,MsgDispMsg

@@1:dx,Msg_ADispMsgdx,Str_AReadStrsi,Str_AIsDigit@@1Str2I2@@1Int_A,axdx,CrLfDispMsg

@@2:dx,Msg_KDispMsgdx,Str_KReadStrsi,Str_KIsDigit@@2Str2I2Int_K,ax@@2dx,CrLfDispMsg

@@3:dx,Msg_ResDispMsg

;si,Int_Acx,Int_K

;Power

;si,Str_PowInt2Strdx,Str_Pow DispMsg

call KeyPress

mov ax,4C00h;конец программы и вывод данных из буфера

inthbegin


Поделиться с друзьями:

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

Организация стока поверхностных вод: Наибольшее количество влаги на земном шаре испаряется с поверхности морей и океанов (88‰)...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.021 с.