Оглавление
на языке Си для int, float 5
3.1 Программа на Ассемблере УМ 7
3.2 Подпрограмма ввода и вывода целых чисел на Ассемблере IBM 9
3.3 Программа на языке программирования Ассемблер IBM PC 15
4.Тестирование и отладка 22
5. Инструкция пользователя 23
6. Параметры программы 26
Заключение 28
Список использованной литературы 29
Изм.
Лист
№ докум.
Подпись
Дата
Лист
У
ВЛГУ. 230100.7.1.00 ПЗ
Разраб.
Крылов. В. А.
Т. Контр
Н. Контр.
Ф.И.О.
Утверд.
Быков В. И.
Программирование на машинно-ориентированном языке
Пояснительная записка
Лит.
Листов
ВТ-113
Изм.
Лист
№ докум.
Подпись
Дата
Лист
3
Введение
Язык ассе́мблера (англ. assembly language) — машинно-ориентированный язык низкого уровня с командами, обычно соответствующими командам машины, который может обеспечить дополнительные возможности вроде макрокоманд[1]; автокод, расширенный конструкциями языков программирования высокого уровня, такими как выражения, макрокоманды, средства обеспечения модульности программ[2].
Автокод — язык программирования, предложения которого по своей структуре в основном подобны командам и обрабатываемым данным конкретного машинного языка[2].
Язык ассемблера — система обозначений, используемая для представления в удобочитаемой форме программ, записанных в машинном коде. Язык ассемблера позволяет программисту пользоваться алфавитными мнемоническими кодами операций, по своему усмотрению присваивать символические имена регистрам ЭВМ и памяти, а также задавать удобные для себя схемы адресации (например, индексную или косвенную). Кроме того, он позволяет использовать различные системы счисления (например, десятичную или шестнадцатеричную) для представления числовых констант и даёт возможность помечать строки программы метками с символическими именами с тем, чтобы к ним можно было обращаться (по именам, а не по адресам) из других частей программы (например, для передачи управления)[3].
Перевод программы на языке ассемблера в исполнимый машинный код (вычисление выражений, раскрытие макрокоманд, замена мнемоник собственно машинными кодами и символьных адресов на абсолютные или относительные адреса) производится ассемблером — программой-транслятором, которая и дала языку ассемблера его название.
ВЛГУ. 230100.7.1.00 ПЗ
Команды языка ассемблера один к одному соответствуют командам процессора. Фактически, они и представляют собой более удобную для человека символьную форму записи — мнемокоды — команд и их аргументов. При этом одной команде языка ассемблера может соответствовать несколько вариантов команд процессора[4].
Изм.
Лист
№ докум.
Подпись
Дата
Лист
4
Кроме того, язык ассемблера позволяет использовать символические метки вместо адресов ячеек памяти, которые при ассемблировании заменяются на вычисляемые ассемблером или компоновщиком абсолютные или относительные адреса, а также так называемые директивы (команды ассемблера, не переводимые в машинные команды процессора, а выполняемые самим ассемблером).
Директивы ассемблера позволяют, в частности, включать блоки данных, задать ассемблирование фрагмента программы по условию, задать значения меток, использовать макрокоманды с параметрами.
Каждая модель (или семейство) процессоров имеет свой набор — систему — команд и соответствующий ему язык ассемблера. Наиболее популярные синтаксисы языков ассемблера — Intel-синтаксис и AT&T-синтаксис.
Существуют компьютеры, реализующие в качестве машинного язык программирования высокого уровня (Форт, Лисп, Эль-76). Фактически, в таких компьютерах они выполняют роль языков ассемблера.
ВЛГУ. 230100.7.1.00 ПЗ
Изм.
Лист
№ докум.
Подпись
Дата
Лист
5
1.Системный анализ
Целью курсового проекта является закрепление полученных знаний и профессиональных навыков разработки и отладки подпрограмм на языке Ассемблера. Курсовой проект выполняется в соответствии с этапами разработки программного обеспечения: анализ и постановка задачи для решения на ЭВМ, проектирование, кодирование, отладка и тестирование разработанной программы. Проектирование ведется в соответствии с методологией структурного программирования.
Требуется рассчитать выражение (1):
(1)
Необходимо разработать программы для её вычисления на языках Си, Ассемблер УМ и Ассемблер IBM PC. С клавиатуры вводятся 2 переменные и значения массива, после выполняется расчет 2 констант 2c и (a*a+1) данной функции и расчет z. Далее выполняется вывод результата на экран монитора. Программа состоит из 4-х функций: функция ввода переменных, две функция расчета констант, функция вывода результата.
ВЛГУ. 230100.7.1.00 ПЗ
Изм.
Лист
№ докум.
Подпись
Дата
Лист
6
2.Структурное программирование. Схема алгоритма. Программа
на языке Си для int, float
Программа на языке программирования Си для int
#include "stdafx.h"
#include
#include
using namespace std;
const int N = 4;
void raschet(int a, int c, int d[])
{int g, k, l, z;
int Y = 0;
g = 2 * c;
k = a*a + 1;
cout << "g = " << "2 * " << c << " = " << g << endl;
cout << "k = " << a*a << " + 1" << " = " << k << endl;
for (int i = 1; i <= N; i++)
{l = d[i] / 4;
cout << i << ") " << "l[" << d[i] << "] = " << d[i] << " / 4 = " << l << endl;
z = (g - l) / k;
cout << " z[" << d[i] << "] = " << z << endl;
Y = Y + z;
cout << endl;}
cout << "Y = " << Y << endl;}
int main()
{setlocale(LC_ALL, "Russian");
int a, c, d[N];
cout << "Введите a = ";
cin >> a;
cout << "Введите с = ";
cin >> c;
cout << "Введите элементы массива" << endl;
for (int i = 1; i <= N; i++)
{cout << "d[" << i << "] = ";
cin >> d[i];}
raschet(a, c, d);
_getch();
return 0;}
Программа на языке программирования Си для float
#include "stdafx.h"
#include
#include
using namespace std;
const int N = 4;
void raschet(float a, float c, float d[])
{float g, k, l, z;
float Y = 0;
g = 2 * c;
k = a*a + 1;
cout << "g = " << "2 * " << c << " = " << g << endl;
cout << "k = " << a*a << " + 1" << " = " << k << endl;
for (int i = 1; i <= N; i++)
{l = d[i] / 4;
cout << i << ") " << "l[" << d[i] << "] = " << d[i] << " / 4 = " << l << endl;
z = (g - l) / k;
cout << " z[" << d[i] << "] = " << z << endl;
Y = Y + z;
cout << endl;}
cout << "Y = " << Y << endl;}
ВЛГУ. 230100.7.1.00 ПЗ
int main()
{setlocale(LC_ALL, "Russian");
float a, c, d[N];
cout << "Введите a = ";
cin >> a;
cout << "Введите с = ";
cin >> c;
cout << "Введите элементы массива" << endl;
for (int i = 1; i <= N; i++)
{cout << "d[" << i << "] = ";
cin >> d[i];}
raschet(a, c, d);
_getch();
return 0;}
Блок схема
нет
z=(2*c-d[i]/4)/(a*a-1)
y=y+z
да
i<5
i=0, y=0
Ввод a, c, d[i]
Изм.
Лист
№ докум.
Подпись
Дата
Лист
7
Вывод y
ВЛГУ. 230100.7.1.00 ПЗ
3. ПрограммированиеИзм.
Лист
№ докум.
Подпись
Дата
Лист
8
3.1 Программа на Ассемблере УМ
Ex77 start 0
lda c
mul c2
sta p
ldx c0
lda c0
usl comp c12
jgt art
jeq art
jsub inc
rmo x,a ;i:=i+1
add c3
rmo a,x
j usl
art lda y
hlt
c word 20
e word 2
c0 word 0
c1 word 1
c3 word 3
c4 word 4
c12 word 12
c2 word 2
y word 0
d word 20
word 12
word 4
word -16
o resb 3
k resb 3
p resb 3
inc lda e
mul e
add c1
sta k
lda d,x
div c4
sta o
lda p
sub o
div k
add y
sta y
rsub
end Ex77
ВЛГУ. 230100.7.1.00 ПЗ
Блок схема
inc
Изм.
Лист
№ докум.
Подпись
Дата
Лист
9
ВЛГУ. 230100.7.1.00 ПЗ
3.2 Подпрограмма ввода и вывода целых чисел на Ассемблере IBM
Подпрограмма ввода
Блок схема
Изм.
Лист
№ докум.
Подпись
Дата
Лист
10
ВЛГУ. 230100.7.1.00 ПЗ
Подпрограмма на языке программирования Ассемблер IBM PC
InputInt proc
mov ah, 0ah
xor di, di
mov dx, offset buff ; адрес буфера
int 21h ; принимаем строку
mov dl, 0ah
mov ah, 02
int 21h
; выводим перевод строки и обрабатываем
; содержимое буфера
mov si, offset buff+2 ; берем адрес начала строки
cmp byte ptr [si], "-" ; если первый символ минус
jnz ii1
mov di, 1 ; устанавливаем флаг
inc si ; и пропускаем его
ii1: xor ax, ax
mov bx, 10 ; основание сc
ii2: mov cl, [si] ; берем символ из буфера
cmp cl, 0dh ; проверяем не последний ли он
jz endin
; если символ не последний, то проверяем его
; на правильность
cmp cl, '0' ; если введен неверный символ <0
jl er
cmp cl, '9' ; если введен неверный символ >9
ja er
sub cl, '0' ; делаем из символа число
mul bx ; умножаем на 10
add ax, cx ; прибавляем к остальным
inc si ; указатель на следующий символ
jmp ii2 ; повторяем
er: mov dx, offset error ; если была ошибка, то выводим сообщение об
; этом и выходим
mov ah,09
int 21h
int 20h ; все символы из буфера обработаны число
; находится в ax
endin: cmp di,1 ; если установлен флаг, то
jnz ii3
neg ax ; делаем число отрицательным
ii3: ret
error db "incorrect number$"
buff db 6,7 Dup(?)
InputInt endp
Изм.
Лист
№ докум.
Подпись
Дата
Лист
11
ВЛГУ. 230100.7.1.00 ПЗ
Подпрограмма на языке программирования Ассемблер IBMPC
Процедура выводаИзм.
Лист
№ докум.
Подпись
Дата
Лист
OutInt proc near ;=====Процедура вывода
test ax, ax ; проверяем число на знак.
jns oi1
mov cx, ax ; eсли оно отрицательное, выведем минус и
; оставим его модуль
mov ah, 02h
mov dl, '-'
int 21h
mov ax, cx
neg ax
oi1: xor cx, cx ; количество цифр будем держать в CX
mov bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2: xor dx, dx
div bx ; делим число на основание сс, в остатке
; получается последняя цифра
push dx ; сразу выводить её нельзя, поэтому сохраним
; её в стэке
inc cx
; а с частным повторяем то же самое, отделяя
; от него очередную
test ax, ax ; цифру справа, пока не останется ноль, что
;значит, что дальше
jnz oi2 ; слева только нули
;========Вывод=========
mov ah, 02h
oi3: pop dx
add dl, '0' ; извлекаем очередную цифру, переводим её в
; символ и выводим
int 21h
loop oi3 ; повторим ровно столько раз, сколько цифр
; насчитали
ret
OutInt endp
ВЛГУ. 230100.7.1.00 ПЗ
12
блок схема
Изм.
Лист
№ докум.
Подпись
Дата
Лист
13
ВЛГУ. 230100.7.1.00 ПЗ
3.3 Программа на языке программирования Ассемблер IBMPC
.model smallИзм.
Лист
№ докум.
Подпись
Дата
Лист
14
.stack 200h
.data
a db ?
c db ?
d db 4 dup (?,?,?,?)
e dw ?
f dw ?
y dw ?
t dw 8
D16 db '0123456789ABCDEF'
BUF db 4 DUP (20h),13,10,'$'
str1 db 'Resultat',13,10,'$'
.code
OutInt proc
test ax, ax ; Проверяем число на знак.
jns oi1
; Если оно отрицательное, выведем
;минус и оставим его модуль.
mov cx, ax
mov ah, 02h
mov dl, '-'
int 21h
mov ax, cx
neg ax
; Количество цифр будем держать в CX
oi1:
xor cx, cx
mov bx, 10 ; основание сс. 10 для десятеричной и т.п.
oi2:
xor dx,dx
div bx
; Делим число на основание сс.
;В остатке получается последняя цифра.
; Сразу выводить её нельзя,
;поэтому сохраним её в стэке.
push dx
inc cx
; А с частным повторяем то же самое,
;отделяя от него очередную
; цифру справа, пока не останется ноль,
; что значит, что дальше слева только нули.
test ax, ax
jnz oi2
; Теперь приступим к выводу.
ВЛГУ. 230100.7.1.00 ПЗ
mov ah, 02h
Изм.
Лист
№ докум.
Подпись
Дата
Лист
15
oi3:
pop dx
; Извлекаем очередную цифру,
;переводим её в символ и выводим.
add dl, '0'
int 21h
; Повторим ровно столько раз,
;сколько цифр насчитали.
loop oi3
ret
OutInt endp
InputInt proc
mov ah,0ah
xor di,di
mov dx,offset buff ; аддрес буфера
int 21h ; принимаем строку
mov dl,0ah
mov ah,02
int 21h ; выводим перевода строки
; обрабатываем содержимое буфера
mov si,offset buff+2 ; берем аддрес начала строки
cmp byte ptr [si],"-" ; если первый символ минус
jnz ii1
mov di,1 ; устанавливаем флаг
inc si ; и пропускаем его
ii1:
xor ax,ax
mov bx,10 ; основание сc
ii2:
mov cl,[si] ; берем символ из буфера
cmp cl,0dh ; проверяем не последний ли он
jz endin
; если символ не последний, то
;проверяем его на правильность
cmp cl,'0' ; если введен неверный символ <0
jl er
cmp cl,'9' ; если введен неверный символ >9
ja er
sub cl,'0' ; делаем из символа число
mul bx ; умножаем на 10
add ax,cx ; прибавляем к остальным
inc si ; указатель на следующий символ
jmp ii2 ; повторяем
ВЛГУ. 230100.7.1.00 ПЗ
er: ; если была ошибка, то выводим
;сообщение об этом и выходим
Изм.
Лист
№ докум.
Подпись
Дата
Лист
16
mov dx, offset error
mov ah,09
int 21h
int 20h
; все символы из буфера
;обработаны число находится в ax
endin:
cmp di,1 ; если установлен флаг, то
jnz ii3
neg ax ; делаем число отрицательным
ii3:
ret
error db "incorrect number$"
buff db 6,7 Dup(?)
InputInt endp
PP1 proc near ;---------------------e
mov Al,2
mov BL,c
imul BL
cbw
mov e,AX
cwd
mov AX,0
mov BX,0
ret 6 ;???
PP1 endp
PP2 proc near ;f
mov AX,0
mov AL,a
imul AL
cbw
mov DX, 1
add AX, DX
cbw
mov f, AX
cwd
mov AX,0
mov DX,0
ret 6 ;???
PP2 endp
Begin:
mov ax, @Data
mov ds, ax
ВЛГУ. 230100.7.1.00 ПЗ
Изм.
Лист
№ докум.
Подпись
Дата
Лист
17
call InputInt ; ввод числа а
mov a,AL
call InputInt ; ввод числа с
mov c,AL
mov SI,0
push SI
l1: call InputInt
pop SI
mov d[SI], AL
add SI,2
cmp SI,t
push SI
jne l1
call PP1 ;вызов п\п 1
call PP2 ;вызов п\п 2
mov SI,0
mov CX,4
xor AX,AX
mov y,AX
for: mov DX,0
mov AH,0
mov CL,0
mov AL,d[SI]
mov BL, AL
cbw
cmp AX,0
jg m2
mov CL,1
mov AL, BL
neg AL
cbw
m2: mov DL,4
idiv DL
cbw
cmp CL,0
je m3
neg AL
cbw
m3: mov BX, e
sub BX,AX
cbw
mov AX,BX
cwd
mov AX, BX
cwd
mov BX,f
idiv BX ;AL=AL/f
ВЛГУ. 230100.7.1.00 ПЗ
cbw
mov BX,AX
cwd
mov AX, BX
cwd
mov DX,y
add AX, DX
cbw
mov y, AX
add SI,2
cmp SI,t
jne for
mov CX,0
mov AX, y
mov DX, AX ;DX:=AX
call OutInt
mov AX,4c00h
int 21h
END begin
Программа на языке программирования Ассемблер IBM PC
Блок схемаИзм.
Лист
№ докум.
Подпись
Дата
Лист
18
ВЛГУ. 230100.7.1.00 ПЗ
Изм.
Лист
№ докум.
Подпись
Дата
Лист
19
ВЛГУ. 230100.7.1.00 ПЗ
4.Тестирование и отладка
Входные данные
|
Си Int
(десятичная СС)
|
Си float
(десятичная СС)
|
Ассемблер УМ
(шестнадцатеричная СС)
|
Ассемблер IBM PC
(десятичная СС)
|
a = 2
c = 20
d[0] = 20
d[1] = 12
d[2] = 4
d[3] = -16
|
29
|
31
|
1D
|
29
|
a = 3
c = 30
d[0] = 51
d[1] = 41
d[2] = 24
d[3] = -21
|
20
|
21.625
|
14
|
20
|
a = 2
c = 20
d[0] = 20
d[1] = 14
d[2] = 4
d[3] = 16
|
28
|
29.3
|
1C
|
28
|
Изм.
Лист
№ докум.
Подпись
Дата
Лист
20
Переведем результат работы Ассемблера УМ в десятичную СС:
1D = 29
14 = 20
1C = 28.
ВЛГУ. 230100.7.1.00 ПЗ
Явно видим, что результат работы программ на Си (для int), Ассемблер УМ и Ассемблер IBM PC совпадают на 100%. Результат работы программ на Си (для float) немного отличается ввиду точности вычислений и отличается от округленного значения максимум на 2 единицы.
5. Инструкция пользователя
Язык программирования Си (для int)
Изм.
Лист
№ докум.
Подпись
Дата
Лист
21
окно с запросом: «Введите а:». Необходимо ввести нужное значение переменной «а», она может быть любым целым положительным или отрицательным числом. Нажимаем Enter.
Далее в этом диалоговом окне появляется запрос: «Введите с:». Необходимо ввести нужное значение переменной «с», она может быть любым целым положительным или отрицательным числом. Нажимаем Enter.
Следующим появится новый запрос: «Введите 4 значений для массива:». Вводим 4 любых значений, которые могут быть любыми целыми положительными или отрицательными значениями. После каждого введенного числа нажимаем Enter.
В конечном итоге в этом диалоговом окне у нас появится запись «y=…». Вместо многоточия будет стоять число-ответ, которое получилось в результате подстановки в выражение (1) введенные Вами значений «а», «с» и значений массива «d[0]», «d[1]», «d[2]», «d[3]». Ответ будет целым положительным или отрицательным числом.
Язык программирования Си (для float)
При запуске программы на языке программирования Си, появится диалоговое окно с запросом: «Введите а:». Необходимо ввести нужное значение переменной «а», она может быть любым целым или десятичным положительным или отрицательным числом. Нажимаем Enter.
Далее в этом диалоговом окне появляется запрос: «Введите с:». Необходимо ввести нужное значение переменной «с», она может быть любым целым положительным или отрицательным числом. Нажимаем Enter.
Следующим появится новый запрос: «Введите 4 значений для массива:». Вводим 4 любых значений, которые могут быть любыми целыми или десятичным
ВЛГУ. 230100.7.1.00 ПЗ
положительными или отрицательными значениями. После каждого введенного числа нажимаем Enter. Изм.
Лист
№ докум.
Подпись
Дата
Лист
22
В конечном итоге в этом диалоговом окне у нас появится запись «y=…». Вместо многоточия будет стоять число-ответ, которое получилось в результате подстановки в выражение (1) введенные Вами значений «а», «с» и значений массива «d[0]», «d[1]», «d[2]», «d[3]». Ответ будет целым или десятичным положительным или отрицательным числом.
Рис. 1
Язык программирования Ассемблер УМ
Записываем код программы при помощи стандартного приложения «Блокнот» в формате *.txt. При описании данных мы сразу должны задать значения для переменных «а», «с» и сразу задать значения массива, которые имеют размер в 1 слово.
Открываем этот файл в программе TCom.exe при помощи вкладки «Asm», далее в отрывшемся окне выбираем вкладку «File» затем «Open» и находим нужный файл с кодом в формате *.txt. Код программы загрузится на вкладку «Source module». Нажимаем на вкладку «GoAsm», если в коде нет ошибок, то приложение выведет синюю запись «No errors detected!» Далее загружаем модуль программы в программе.
TCom.exe при помощи вкладки «Load» в основном окне.
Запускаем программу при помощи клавиши «Start» в основном окне.
Результат подстановки значений «а», «с» и массива «d» в выражение (1) будет находиться в Аккумуляторе, который располагается во втором поле программе TCom.exe (смотреть рис. 1). Значением Аккумулятора будет число в шестнадцатеричной СС.
Язык программирования Ассемблер IBMPC
Запускаем эмулятор DOSBox 0.74. С его помощью переходим на необходимый диск (используем команду «mount c», смотреть рис. 2 (файл находится на диске С в папке с название «1», название файла «сс»)) и отрываем папку, в которой расположен файл с кодом программы в формате *.asm,
ВЛГУ. 230100.7.1.00 ПЗ
ВЛГУ. 230100.7.1.00 ПЗ
ВЛГУ. 230100.7.1.00 ПЗ компоновщик tasm.exe и редактор связей tlink.exe (ОБЯЗАЕЛЬНОЕ УСЛОВИЕ: все 3 файла должны быть в 1(!) папке).
Далее в эмуляторе DOSBox 0.74 вводим «tasm.exe <�название файла>..asm». Таким образом
Рис.2 мы даем команду скомпилировать код и показать ошибки, если они есть. Если их нет, то эмулятор выведет отсутствие сообщений об ошибке и предупреждений (смотреть рис. 2). В результате удачной компиляции будет создан файл формата *.obj.
Продолжаем вводить в окно эмулятора DOSBox 0.74 команды. Вводим «tlink.exe <�название файла>.obj». Этой командой мы создаем приложение, которое далее будет считать наше выражение. Если все прошло удачно, то DOSBox 0.74 выдаст об этом сообщение (смотреть рис. 2). В результате будет создан файл формата *.exe.
Последний этап трансляции. Вводим «<�название файла>.exe». В окне DOSBox 0.74 появится приглашение ко вводу, вводим значения переменных и массива, которые могут быть целыми положительными или отрицательными числам, в следующей последовательности: а, c, d[0], d[1], d[2], d[3]. Между каждым введенным значением жмем Enter.
Последняя появившаяся строка – ответ, который будет целым положительным или отрицательным числом.
Изм.
Лист
№ докум.
Подпись
Дата
Лист
23
ВЛГУ. 230100.7.1.00 ПЗ
6. Параметры программы
Язык программирования Си (int)
Объем папки со всеми файлами, созданными при компиляции = 14 Мб
Объем документа с кодом = 962 байт
Средняя продолжительность компиляции = 2.5 сек
Время расчета ответа = крайне мало, менее 1 сек
Язык программирования Си ( float)
Объем папки со всеми файлами, созданными при компиляции = 14 Мб
Объем документа с кодом =1003 байта
Средняя продолжительность компиляции = 1.52 сек
Время расчета ответа = крайне мало, менее 1 сек Изм.
Лист
№ докум.
Подпись
Дата
Лист
24
Язык программирования Ассемблер УМ
Объем документа с кодом =664 байт
Среднее время компиляции и расчета ответа = 15 сек.
Язык программирования Ассемблер IBMPC
Объем папки со всеми файлами, необходимыми и созданными при компиляции = 203 142 байт
Объем документа *.asm = 6 594 байт
Объем документа *.obj = 707 байт
Объем документа *.exe =924 байт
Средняя продолжительность компиляции = крайне мало, менее 1 сек
Время расчета ответа = крайне мало, менее 1 сек
ВЛГУ. 230100.7.1.00 ПЗ
Заключение
В ходе выполнения проекта, мы работали с тремя языками программирования: Си, языком Ассемблера для Учебной Машины и языком Ассемблера IBM PC на базе архитектуры Intel 8086.
В ходе проекта были изучены некоторые аспекты языка Ассемблера и ЭВМ в целом. Для того, чтобы решить поставленную задачу, были продуманы алгоритмы ее решения на языках программирования Си, Ассемблер УМ и Ассемблер IBM PC, составлены блок-схемы этих решений и написаны программы на каждом из языков программирования. В результаты были получены рабочие программы, которые способны решить поставленную задачу, и примеры их работы.
Думаю, что для расширений возможностей данных программ можно попробовать написать программу на языке Си со вставкой на языке Ассемблера, что позволит сократить некоторое количество времени при написании и отладке программы только на языке Ассемблера IBM PC.
Изм.
Лист
№ докум.
Подпись
Дата
Лист
25
ВЛГУ. 230100.7.1.00 ПЗ
Список использованной литературы
1. Галисеев Г. В. Ассемблер для Win 32. Самоучитель. — М.: Диалектика, 2007. — 368 с. — ISBN 978-5-8459-1197-1
2. Зубков С. В. Ассемблер для DOS, Windows и UNIX. — М. ДМК Пресс; СПб. Питер, 2006. — 608 с. — ISBN 5-94074-259-9
3. Кип Ирвин. Язык ассемблера для процессоров Intel = Assembly Language for Intel-Based Computers. — М.: Вильямс, 2005. — 912 с. — ISBN 0-13-091013-9
4. Калашников О. А. Ассемблер? Это просто! Учимся программировать. — СПб.: БХВ-Петербург, 2007. — 384 с. — ISBN 978-5-94157-709- Изм.
Лист
№ докум.
Подпись
Дата
Лист
26
ВЛГУ. 230100.7.1.00 ПЗ
|