
- •Введение
- •1 Постановка задачи
- •1.1 Основная программа
- •1.2 Программа построение графика
- •2 Краткие теоретические сведения
- •2.1 Ассемблер, язык ассемблера
- •2.2 Ассемблеры для dos
- •3 Разработка алгоритма программы
- •3.1 Поэтапный алгоритм программы
- •3.2 Построение графика
- •4 Разработка программы
- •4.1 Описание команд микропроцессора
- •4.1.1 Команды пересылки и загрузки
- •4.1.2 Арифметические команды
- •4.1.3 Циклический сдвиг
- •4.1.4 Циклы
- •4.1.5 Синтаксис процедуры
- •4.1.6 Операции над битами и байтами
- •4.1.7 Команда сравнения и условного перехода
- •4.1.8 Префиксы
- •4.2 Регистры общего назначения
- •4.2.1 Индексные регистры
- •4.2.2 Сегментные регистры
- •4.4 Описание используемых функций
- •4.5.4 Процедура поиска нулевой строки
- •4.5.5 Процедура записи в файл “My.Dat”
- •4.5.6 Процедура создания и записи канального файла
- •4.5.7 Завершение программы
- •4.6 Описание программы разработанной на языке c#
- •5 Результат выполнения программы
- •5.3 Карта памяти
- •5.4 График
- •Заключение
- •Список используемых источников
- •Приложение 1 - Код основной программы
- •Приложение 2 – Код программы построения графика
Приложение 1 - Код основной программы
.486
assume CS:CodeSg, DS:DataSg, SS:StackSg
CodeSg segment 'CODE' use16
OpenUk proc
mov AH, 3Dh
mov AL, 00h
xor CX, CX
lea DX, UK
int 21h
mov descuk, AX
ret
OpenUk endp
Set proc
mov cx,variant
dec cx
ddd:
call find0
loop ddd
ret
Set endp
find0 proc
push cx
mov bx, descuk
push DS
pop ES
more:
mov cx,10h
mov ah,3fh
lea dx,cmpstr
int 21h
lea si,cmpstr
lea di,etstr
mov cx,10h
repe cmpsb
cmp cx,0
jnz more
pop cx
ret
find0 endp
Read proc
mov AH, 3Fh
mov BX, descuk
mov CX, 10240
lea DX, kadr
int 21h
ret
Read endp
CloseUk proc
mov AH, 3Eh
mov BX, descuk
int 21h
ret
CloseUk endp
CreatMy proc
mov AH, 3Ch
xor CX, CX
mov DX, offset my
int 21h
mov descmy, AX
ret
CreatMy endp
Rec proc
mov AH, 40h
mov BX, descmy
mov CX, 10240
lea DX, kadr
int 21h
ret
Rec endp
CloseMy proc
mov AH, 3Eh
mov BX, descmy
int 21h
ret
CloseMy endp
CreateResult proc
mov AH, 3Ch
xor CX, CX
mov DX, offset result
int 21h
mov descrsl, AX
ret
CreateResult endp
CloseResult proc
mov AH, 3Eh
mov BX, descrsl
int 21h
ret
CloseResult endp
Write proc
mov AH, 40h
mov BX, descrsl
mov CX, kol_b
mov DX, offset Res
int 21h
ret
Write endp
Vibor proc
lea SI, kadr
sub SI, 16
lea DI, Res
mov CX, kol_b
Make_byte:
push CX
mov CX, 4
xor DX, DX
Look_string:
push CX
push SI
push SI
add SI, Byte_1
mov AX, [SI]
mov CX, Bit_1
BT AX, CX
rcl DX, 1
pop SI
add SI, Byte_2
mov AX, [SI]
mov CX, Bit_2
BT AX, CX
rcl DX, 1
pop SI
add SI, 16
pop CX
loop Look_string
mov [DI], DL
inc DI
pop CX
loop Make_byte
ret
Vibor endp
begin:
mov AX, DataSg
mov DS, AX
mov AX, StackSg
mov SS, AX
push DS
pop ES
call OpenUk
call Set
call Read
call CloseUK
call CreatMy
call Rec
call CloseMy
call CreateResult
call Vibor
call Write
call CloseResult
mov AX, 4C00h
int 21h
CodeSg ends
DataSg segment 'DATA' use16
cmpstr db 16 dup(?)
etstr db 16 dup (0)
variant dw 14
Byte_1 dw 23
Bit_1 dw 1
Byte_2 dw 25
Bit_2 dw 7
kol_b dw 160
Res db 160 dup (?)
uk db "UK64.dat",0
my db "MY.dat",0
result db "RESULT.dat",0
descuk dw ?
descmy dw ?
descrsl dw ?
kadr db 10256 dup(?)
DataSg ends
StackSg segment stack 'STACK' use16
db 256 dup(0)
StackSg ends
end begin