Федеральное государственное автономное
образовательное учреждение
высшего профессионального образования
«СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»
ИИФиРЭ
Кафедра: «Радиотехника»
ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №1
Вариант №15
Преподаватель __________
Студент группы РФ08-10 __________
Красноярск 2011
Цель работы: Знакомство со структурой программы при программировании на языке ассемблера для персональных компьютеров, компилирование программы, отладка программы с помощью OllyDbg.
Задание: Написать программу преобразования двухбайтового кода ASCII в соответствующее однобайтовое число.
Блок схема:
Код программы:
.386
.MODEL Flat, STDCALL
option casemap:none
include D:\masm32\include\windows.inc
include D:\masm32\include\user32.inc
include D:\masm32\include\kernel32.inc
includelib D:\masm32\lib\user32.lib
includelib D:\masm32\lib\kernel32.lib
.CONST
.DATA?
.DATA
S1 Db " 254",0
X dB 0
Y dB 0
D dB 0
.CODE
start:
LEA ESI,S1 ;загружаем еффективный адрес переменной S1 в регистр ESI
mov AL,X ;загружаем в регистр AL переменную X
pershet: ;ставим метку
mov Bl,[esi] ;записываем в регистр BL содержимое находящееся по адрессу [esi]
cmp Bl,0 ;сравниваем содержимое регистра BL c 0
je stadi2 ;если bl=0 то преходим на метку stadi2
inc esi ;увеличиваем адрес на 1
inc al ;увеличиваем содержимое регистра на 1
jmp pershet ;безусловный переход на метку pershet
stadi2:
dec esi ;смещение адреса на еденицу, т.е. уменьшение содерж регистра ESI на еденицу
mov Y,AL ;записываем в переменную Y число символов, посчитанных в предыдущем цикле
mov Dl,0 ;обнуление регистров
mov CL,0 ;обнуление регистров
mov BL,1 ;нулевая степень десятки
JMP st2 ;безусловный переход на метку st2
perevod:
mov AL,10 ;запись в регистр AL 10
mul BL ;умножение содержимого регистра AL на BL, результат сохраняется в AL
mov BL,AL ;запись содержимого AL в BL
dec esi ;смещение адреса на еденицу, т.е. уменьшение содерж регистра ESI на еденицу
st2:
inc Dl ;увеличение содержимого регистра Dl на еденицу
mov Al,[esi] ;загрузка в AL значения находящегося по данному адресу
SUB Al,48 ;отнимаем от содержимого AL 48
MUL BL ;умножаем на содержание регистра AL на BL, результат сохр в AL
ADD CL,AL ;складываем содержимое регистров CL и AL
cmp DL,Y ;сравнение значение регистра DL c переменной Y
je theend ;если DL=Y, то осуществляется переход на метку theend
JMP perevod ;безусловный переход на метку perevod
theend:
mov D,CL ;запись в переменную D содержимого регистра CL
invoke ExitProcess,0
end start
Рисунок 1 - Работа программы в отладчике
Вывод: В ходе выполнения данной лабораторной работы было произведено знакомство со структурой программы преобразования двухбайтового кода ASCII в соответствующее однобайтовое число, при программировании на языке ассемблера для персональных компьютеров, выполнено компилирование программы, а так же отладка программы с помощью OllyDbg.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.