Программа преобразования двухбайтового кода ASCII в соответствии с однобайтовым числом

Страницы работы

6 страниц (Word-файл)

Содержание работы

Федеральное государственное автономное

образовательное учреждение

высшего профессионального образования

 «СИБИРСКИЙ ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ»

ИИФиРЭ

Кафедра: «Радиотехника»

ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ №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.

Похожие материалы

Информация о работе

Предмет:
Радиотехника
Тип:
Отчеты по лабораторным работам
Размер файла:
80 Kb
Скачали:
0