- •Введение
- •1 Формулировка задачи
- •2 Алгоритм программы
- •2.1 Разработка алгоритма основной программы
- •2.2 Разработка алгоритма процедуры чтение из файла uk64.Dat и запись в файл My.Dat до нулевой строки
- •2.3 Разработка алгоритма выбор определённых байтов и битов и записи результата в файл Result.Dat
- •3.2 Используемые команды
- •3.2.1 Команды пересылки и загрузки
- •3.2.2 Арифметические команды
- •3.3 Используемые функции dos
- •3.3.1 Открытие файла
- •3.3.2 Создание файла
- •3.3.3 Чтение данных из файла
- •3.3.4 Закрытие файла
- •3.3.5 Запись в файл
- •3.3.6 Установка указателя файла
- •3.5.3 CreationMy – Создание файла My.Dat
- •3.5.4 NewStr – Чтение из файла uk64.Dat и запись в файл My.Dat до нулевой строки
- •3.5.5 CloseCadr – Закрытие uk64.Dat, создание result.Dat. Выполнение функции установки указателя файла
- •3.5.6 Cursor – Установка указателя на начало файла My.Dat
- •3.5.7 NextStr – выбор определённых байтов и битов и записи результата в файл Result.Dat
- •Список используемых источников
- •Приложение а – Код основной программы
- •Приложение b – Код программы построения графика
Список используемых источников
-
Юров В.И. Assembler. Учебник для вузов. 2-е издание – СПб.: Питер, 2006. – 637 с.
-
Зубков С.В. Assembler для DOS, Windows и Unix. 3-е издание – М.: ДМК Пресс; СПб.: Питер, 2004. – 608 с.: ил.
-
Пирогов В.Ю. Assembler. Учебный курс. 3-е издание - М.: Нолидж, 2001. – 848 с.: ил.
-
Павловская Т.А. Программирование на языке высокого уровня C#
Приложение а – Код основной программы
-
.486
-
CodeSg segment 'CODE' use16
-
assume CS:CodeSg, DS:DataSg, SS:StackSg
-
Begin: mov AX,DataSg
-
mov DS,AX
-
push ds
-
pop es
-
cld
-
Call OpenUK
-
;
-
lea dx,buffer
-
mov cx,Variant
-
dec cx
-
cmp cx,0
-
;
-
Call CreationMy
-
;
-
Call NewStr
-
;
-
Call CloseCadr
-
;
-
Call Cursor
-
;
-
Call NextStr
-
;
-
Exit:
-
mov ah,4ch
-
int 21h
-
;
-
OpenUK proc
-
mov ah,3dh
-
mov al,0
-
lea dx,uk64
-
int 21h
-
mov handle1,ax
-
mov bx,ax
-
ret
-
OpenUK endp
-
;
-
CreationMy proc
-
mov ah,3ch
-
mov cx,0
-
lea dx,my
-
mov handle2,ax
-
lea dx,buffer
-
int 21h
-
ret
-
CreationMy endp
-
;
-
NewStr proc
-
m3:
-
mov cx,16
-
mov ah,3fh
-
mov bx,handle1
-
int 21h
-
cmp ax,16
-
jne m2
-
mov di,dx
-
mov cx,16
-
mov ax,0
-
repe scasb
-
je m2
-
mov bx,handle2
-
mov cx,16
-
mov ah,40h
-
int 21h
-
jmp short m3
-
m2:
-
ret
-
NewStr endp
-
;
-
CloseCadr proc
-
mov bx,handle1
-
mov ah,3eh
-
int 21h
-
mov ah,3ch
-
mov cx,0
-
lea dx,res
-
int 21h
-
mov handle1,ax
-
ret
-
CloseCadr endp
-
;
-
Cursor proc
-
xor ax,ax
-
xor cx,cx
-
xor dx,dx
-
mov ah,42h
-
mov bx,handle2
-
int 21h
-
ret
-
Cursor endp
-
;
-
NextStr proc
-
pop bp
-
FormByte:
-
mov cx,4
-
mov bx,handle2
-
lea dx,buffer
-
m5:
-
push cx
-
push ax
-
mov cx,16
-
mov ah,3fh
-
int 21h
-
cmp ax,16
-
jne EndCanal
-
pop ax
-
bt word ptr buffer[sms1],face1
-
rcl ah,1
-
bt word ptr buffer[sms2],face2
-
rcl ah,1
-
pop cx
-
loop m5
-
mov buffer,ah
-
mov ah,40h
-
mov bx,handle1
-
mov cx,1
-
int 21h
-
jmp short FormByte
-
EndCanal:
-
pop ax
-
pop ax
-
mov ah,3eh
-
mov bx,handle1
-
int 21h
-
mov bx,handle2
-
push bp
-
int 21h
-
ret
-
NextStr endp
-
;
-
CodeSg ends
-
DataSg segment 'DATA' use16
-
Variant equ 1
-
face1 equ 2
-
face2 equ 5
-
sms1 equ 0
-
sms2 equ 5
-
UK64 db 'UK64.dat',0
-
my db 'my.dat',0
-
res db 'result.dat',0
-
buffer db 16 dup(?),'$'
-
handle1 dw ?
-
handle2 dw ?
-
DataSg ends
-
StackSg segment stack 'STACK' use16
-
db 256 dup(0)
-
StackSg ends
-
end Begin
Приложение b – Код программы построения графика
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace WindowsFormsApplication12
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
BinaryReader binReader = new BinaryReader(File.Open(openFileDialog1.FileName, FileMode.Open));
chart1.Series[0].Points.Clear();
int x = 0;
while (binReader.BaseStream.Position < binReader.BaseStream.Length)
{
byte c = binReader.ReadByte();
chart1.Series[0].Points.AddXY(x, c);
x++;
}
binReader.Close();
}
}
private void button2_Click(object sender, EventArgs e)
{
Application.Exit();
}