Фрагмент для ознакомления
2
Лабораторная работа № 1
Введение в основы программирования на языке Ассемблера
Цель работы
Практическое овладение навыками составления простейших программ на языке Ассемблера и работы с программами TASM и TLINK.
Выполнение работы
Командный файл 1.bat
tasm /z /zi /n hello_1 hello_1 hello_1
tlink /v hello_1
Результат выполнения командного файла 1.bat и программы hello_1.exe.
Командный файл run.bat
tasm /z /zi /n %1 %1 %1
tlink /v %1
Результат выполнения командного файла run.bat с аргументом hello_1 и программы hello_1.exe.
Листинг программы hello_1.asm
;Program Hello_1– Моя первая программа
Data SEGMENT ;Открыть сегмент данных
Greet DB 'Hello, My friends!', 13, 10, '$' ;Определить строку
;символов с именем Greet
Data ENDS ;Закрыть сегмент данных
Ourstack SEGMENT Stack ;Открыть сегмент стека
DB 100h DUP (?) ;Отвести под стек 256 байт
Ourstack ENDS ;Закрыть сегмент стека
ASSUME CS:Code, DS:Data, SS:Ourstack ;Назначить сегментные
;регистры
Code SEGMENT ;Открыть сегмент кодов
Start: mov AX, Data ;Инициализировать
mov DS, AX ;сегментный регистр DS
mov AH, 09h ;Вывести строку Greet
mov DX, OFFSET Greet ;на экран с помощью
int 21h ;DOS
mov AL, 0 ;Завершить программу
mov AH, 4Ch ;с помощью
int 21h ;DOS
Code ENDS ;Закрыть сегмент кодов
END Start ;Конец исходного модуля
Содержимое файла hello_1.obj
Содержимое файла hello_1.lst
Turbo Assembler Version 2.51 15/02/21 08:31:08 Page 1hello_1.ASM
1 ;Program Hello_1– Моя первая программа
2 0000 Data SEGMENT ;Открыть сегмент данных
3 0000 48 65 6C 6C 6F 2C 20+ Greet DB 'Hello, My friends!', 13, 10, '$' ;Определить строку
4 4D 79 20 66 72 69 65+
5 6E 64 73 21 0D 0A 24
6 ;символов с именем Greet
7 0015 Data ENDS ;Закрыть сегмент данных
8 0000 Ourstack SEGMENT Stack ;Открыть сегмент стека
9 0000 0100*(??) DB 100h DUP (?) ;Отвести под стек 256 байт
10 0100 Ourstack ENDS ;Закрыть сегмент стека
11 ASSUME CS:Code, DS:Data, SS:Ourstack ;Назначить сегментные
12 ;регистры
13 0000 Code SEGMENT ;Открыть сегмент кодов
14 0000 B8 0000s Start: mov AX, Data ;Инициализировать
15 0003 8E D8 mov DS, AX ;сегментный регистр DS
16 0005 B4 09 mov AH, 09h ;Вывести строку Greet
17 0007 BA 0000r mov DX, OFFSET Greet ;на экран с помощью
Лабораторная работа №4.
Программирование арифметических операций.
Изучение основ работы с TURBO DEBUGGER
Цель работы
Программирование задач, выполняющих арифметические вычисления и получение навыков отладки программ средствами отладчика TURBO DEBUGGER.
Выполнение работы
Листинг программы Prog_4.asm
;Program_4 – Арифметические операции, вариант 8
Data SEGMENT ;Открыть сегмент данных
A DB 0Fh ;Инициализировать
B DB 14 ;переменные A, B, C, D, X
C DB 10h
D DB 6
X DW ?
Data ENDS ;Закрыть сегмент данных
Ourstack SEGMENT Stack ;Открыть сегмент стека
DB 100h DUP (?) ;Отвести под стек 256 байт
Ourstack ENDS ;Закрыть сегмент стека
ASSUME CS:Code, DS:Data, SS:Ourstack ;Назначить сегментные ;регистры
Code SEGMENT ;Открыть сегмент кодов
Start: mov AX,Data ;Инициализировать
mov DS,AX ;сегментный регистр DS
xor AX,AX ;Очистить регистр AX
; --- выполнение арифметических вычислений ---
; C*D
mov AL,C
mul D
mov CL,AL ;в CL сохраняем промежуточный результат C*D
; A*B
mov AL,A
mul B ;результат в AL
; вычитание
sub AL,CL ;результат в AL
; возведение в степень 2
mul AL ;результат в AL
; сохраняем результат вычисления функции в X
mov X,AX
; -------------------------------------------
mov AX,4C00h ;Завершить программу
int 21h ;с помощью DOS
Code ENDS ;Закрыть сегмент кодов
END Start ;Конец исходного модуля.
Копия экрана с результатом выполнения командного файла run.bat с аргументом prog_4.