
- •Лабораторная работа n 1. Принципы программного управления эвм. Команды ms dos
- •Общие положения
- •Командная строка
- •Справочная информация о командах
- •Порядок выполнения работы
- •Содержание отчета
- •Лабораторная работа n 2. Тестирование персонального компьютера и его основных устройств
- •Общие положения
- •Инструменты операционной системы
- •Командный процессор
- •Задание 1
- •Служебная программа
- •Задание 1
- •Утилита SysInfo
- •Получение общей информации о компьютере
- •Получение информации о видеосистеме
- •Получение информации о прерываниях
- •Получение информации из cmos-памяти
- •Тестирование дисковой памяти
- •Получение информации об использовании основной памяти
- •Получение информации о драйверах устройств пк
- •Тестирование быстродействия центрального процессора
- •Тестирование быстродействия дисковой памяти
- •Тестирование общего быстродействия компьютера
- •Содержание отчета
- •Программный комплекс sandra
- •Начало работы в sandra
- •Задание 1
- •Задание 2
- •Задание 3.
- •Задание 4.
- •Задание 5.
- •Задание 6.
- •Приложение 1.
- •Приложение 2.
- •Лабораторная работа n 3. Функциональные возможности отладчика программ debug
- •Назначение и функциональные возможности отладчика программ debug
- •Основные команды отладчика debug
- •Перечень заданий
- •Содержание отчета
- •Лабораторная работа n 4. 'assembler Часть 1. Этапы формирования ассемблерной программы
- •Порядок выполнения работ
- •Перечень заданий
- •Этапы формирования программы
- •Типовая структура .Asm-программы
- •Пример программы Задача расчета сложных процентов.
- •Основные сведения о листинге и его структуре
- •Программа извлечения квадратного корня.
- •Листинг программы sqr.Asm.
- •Часть 2. Создание исполняемого файла .Exe Порядок выполнения работы
- •Содержание отчета
- •Часть 3. Ассемблерная программа Порядок выполнения работ
- •Содержание отчета
- •Часть 4. Изучение процедур преобразования ascii-кода в двоичный код (str2bin) и двоичного кода в код ascii (bin2str). Краткие пояснения
- •Задание 1. Просмотр сведений о сетевых подключениях компьютера с помощью ос Windows
- •Задание 2. Установление параметров сетевых протоколов (команда ipconfig)
- •Краткая информация о команде ipconfig
- •Задание 3. Проверка ip-адресов
- •Краткая информация о команде ping
- •Задание 4. Трассировка маршрутов
- •Краткая информация о команде tracert
- •Tracert имя_хоста
- •Задание 5. Команды сети net
- •Краткая информация о команде net user
- •Краткая информация о команде net use
- •Краткая информация о команде net stat
- •Лабораторная работа № 6. Ознакомление с новейшими компьютерными технологиями и разработками путем поиска информации в сети интернет
- •Перечень заданий
Типовая структура .Asm-программы
1. Имя программы:
TITLE prog.ASM
; может быть комментарий назначения программы
2. Инициализация стековой памяти в сегменте стека:
STACKSEG segment stack
DW N dup(?)
; меньше N=32 слов в стеке обычно
; задавать не следует
STACKSEG ends
3. Инициализация всех переменных в сегменте данных:
DATASEG segment
;задаются имена всех констант и переменных,
; их начальные значения и резервируется
; память под них
DATASEG ends
4. Назначения сегментных регистров в сегменте кодов:
CODESEG segment
assume CS:codeseg, DS:dataseg, SS:stackseg
5. Организация главной программной процедуры far
MAIN proc far
6. Запись адреса префикса программного сегмента (PSP) в стек:
push DS
sub AX, AX
push AX
7. Инициализация содержимого регистра сегмента данных:
mov AX, dataseg
mov DS, AX
;при указании в команде в качестве операнда символического
;имени сегмента (dataseg) происходит пересылка начального
;адреса этого сегмента - неверно указывать offset dataseg
8. Текст программы пользователя в сегменте кодов:
;основной текст программы
9. Восстановление адреса PSP в DS:
ret
10. Тексты используемых процедур
;если имеются процедуры near , используемые в данной программе (например, процедуры str2bin или bin2str), то записываются тексты этих процедур.
11. Закрытие главной процедуры main, сегмента кодов и конец программы:
MAIN endp
CODESEG ends
end MAIN
Итак, обобщенная структура программы:
title prog.asm
stackseg segment
;задание поля памяти для стека
stackseg ends
dataseg segment
;задание полей памяти для данных и
;определение всех констант и переменных
dataseg ends
codeseg segment
assume CS:codeseg, DS:dataseg, SS:stackseg
main proc far
push DX
sub AX, AX
push AX
mov AX, dataseg
mov DS, AX
;основной текст программы
ret
;тексты ближних процедур
main endp
codeseg ends
end main
Пример программы Задача расчета сложных процентов.
Капитал Q вкладывается в некоторое мероприятие, обеспечивающее ежегодный прирост капитала D%. Определить текущую величину капитала в течение первых N лет.
.ASM-программа для создания исполняемой .EXE-программы.
title Raschet.asm
;расчет сложных процентов
stacksg segment stack 'stack'
dw 64 dup(?)
stacksg ends
datasg segment 'data'
; задание переменных
VVQ db 'Введите величину начального капитала (до 64000)'
db 10,13,'$'
VVD db 10,13,'Введите процент годового прироста'
db 10,13,'$'
VVN db 10,13,'Введите количество расчетных лет'
db 10,13,'$'
Q0 dw ?
D dw ?
D1 dw ?
N dw ?
I dw 1
Q dw ?
buf db 5,0,0,0,0,0,0,0
viv1 db ' год капитал'
db 10,13,'$'
srb db 14 dup(0),'$'
sr db 6 dup(0),'$'
srk db 10,13,'$'
ft10 dw 1
ten dw 10
sto dw 100
datasg ends
codesg segment 'code'
main proc far
assume CS:codesg, DS:datasg, SS:stacksg
push DS
sub AX,AX
push AX
mov AX,datasg
mov DS,AX
mov AH,9 ; запрос на ввод Q
mov DX,offset VVQ
int 21H
mov AH,0AH ; ввод Q
mov DX,offset buf
int 21H
call str2bin
mov Q0,DI
mov AH,9 ; запрос на ввод D
mov DX,offset VVD
int 21H
mov AH,0AH ; ввод D
mov DX, offset buf
int 21H
call str2bin
mov D,DI
mov AH,9 ; запрос на ввод N
mov DX,offset VVN
int 21H
mov AH,0AH ; ввод N
mov DX,offset buf
int 21H
call str2bin
mov N, DI
mov AX,D
mov D1,AX
add D1,100 ; расчет D1=(1+D/100)*100
mov AX, Q0 ; присвоение Q=Q0
mov Q, AX
mov ah,9
mov dx,offset viv1
int 21H
rst: mov AX, Q ; расчет Q=Q*D1
mul D1
div sto
mov Q, AX
mov AX,I
call bin2str
mov AH,9 ;вывод года
mov DX,offset sr
int 21H
mov AH,9 ;вывод пробела
mov DX,offset srb
int 21H
mov AX,Q ;вывод прибыли
call bin2str
mov AH,9
mov DX,offset sr
int 21H
mov AH,9 ;перевод строки
mov DX,offset srk
int 21H
inc I ; I=I+1
mov AX, I ; сравнение I с N
cmp AX, N
jle rst ; условный переход по I<=N
ret
bin2str proc near
mov si,offset sr+5
; процедура перевода двоичного
pr2: sub dx,dx
;кода в код ASCII с предварительным
mov [si],dl ;обнулением поля sr -
dec si
cmp si,offset sr
ja pr2
mov cx,10
mov si,offset sr+5
pr1: xor dx,dx
div cx
or dl,30h
mov [si],dl
dec si
cmp ax,0
jne pr1
ret
bin2str endp
str2bin proc near
; процедура перевода ASCII
mov ft10,1 ; -кодов в двоичный код
xor DI,DI
mov cx,10
lea si,buf+1
xor bh,bh
mov bl,[buf+1]
pr3: mov al,[si+bx]
and ax,0fh
mul ft10
add DI,ax
mov AX,ft10
mul ten
mov ft10,AX
dec bx
jnz pr3
ret
str2bin endp
main endp
codesg ends
end main
Примечание. В качестве иллюстративного примера для сравнения сложности программ на языке ассемблера с программами на языке высокого уровня, ниже приводится без пояснений программа решения этой задачи на языке Бейсик:
10 print "Расчет сложных процентов"
20 input "Введите Q, D, N", Q, D, N
30 D1=1+D/100
40 I=1
50 Q=Q*D1
60 print I, Q
70 I=I+1
80 if I<=N then 50
90 end