Цель работы: Изучение языка программирования ассемблер для процессора Интел 8086.
Задание: Написать программу преобразования двухбайтового двоичного числа в двоично-десятичное число с учетом знака.
Исходный текст программы:
model small ;директива модели памяти model с параметром small
.data ;упрощенная директива сегмента данных
chislo dw 10101010101010b ;инициализация числа 10922
result dw 5 dup(?) ;выделение памяти под пятиэлементный массив
znak dw ? ;выделение памяти под вспомогательную переменную znak
.stack 256h ;упрощенная директива для 256-байтного сегмента стека
.code ;упрощенная директива сегмента кода
main proc ;начало процедуры main
mov ax,@data ;инициализация сегментного
mov ds,ax ;регистра ds
Push 1b ;запись в cтек числа 1
Push 1010b ;запись в стек числа 10
Push 1100100b ;запись в стек числа 100
Push 1111101000b ;запись в стек числа 1000
Push 10011100010000b ;запись в стек числа 10000
mov bx,0 ;инициализация регистра bx
mov si,0 ;инициализация регистра si
mov znak,0 ;инициализация переменной znak
mov ax,chislo ;пересылаем число в регистр ах
rol ax,1 ;сдвигаем число на один разряд влево с переносом первого ;разряда в регистр cf
jnc next ;если cf=0 переходим на метку next
rcr ax,1 ;сдвигаем число вправо
neg ax ;переводим число в дополнительный код
mov znak,1 ;пересылаем 1 в переменную znak(1-ччисло отрицательное)
jmp perevod ;безусловный переход на метку perevod
next:
rcr ax,1 ;сдвигаем число право
perevod:
pop bx ;запись в регистр bx верхнего элемента стека
div bx ;деление вида (ax:dx):=ax/bx, где в ax - частное, в dx - остаток
mov result[si],aх ;запись в si-й элемент массива result целой части деления
cmp dx,1010b ;если дробная часть меньше или равна 1010, то...
jbe endcicle ;...переход к концу программы
mov ax,dx ;запись в ax содержимого dx, т. е. дробной части деления
xor dx,dx ;очистка dx
add si,2 ;увеличение si на 2
jmp perevod ;переход к началу цикла
endcicle:
mov ax,4c00h ;формирование функции стандартного выхода
int 21h ;формирование прерывания типа 21h и стандартный выход
main endp ;конец процедуры main
end main ;конец программы с точкой входа main
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.