44438 (Программа перевода десятичного числа в двоичную и шестнадцатеричную системы счисления), страница 2
Описание файла
Документ из архива "Программа перевода десятичного числа в двоичную и шестнадцатеричную системы счисления", который расположен в категории "". Всё это находится в предмете "информатика" из , которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "рефераты, доклады и презентации", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "44438"
Текст 2 страницы из документа "44438"
;Главная процедура
g_k proc
mov ax,@data
mov ds, ax
mov es, ax
d: lea dx, t1
mov ah,09h
int 21h
lea di, x_ascii
call ink
call des_2
push ax
lea dx,t3
mov ah,9h
int 21h
pop ax
call bin_dis
push ax
lea dx,t4
mov ah,9h
int 21h
pop ax
call outhex
lea dx,t5
mov ah,9h
int 21h
mov ah,1h
int 21h
cmp al,"Y"
loope d
cmp al,"y"
loop d
mov ah,4ch
int 21h
g_k endp
ink proc
;Процедура ввода десятичного числа
xor cx,cx
l1:
mov ah,1
int 21h
stosb
inc cx
cmp al,0dh
jnz l1
dec cx
ret
ink endp
dis proc
;Процедура вывода на экран десятичного числа
r1: mov dl,[di]
mov ah,2
int 21h
inc di
loop r1
ret
dis endp
des_2 proc
;Перевод числа(десятичного) в двоичную систему
mov si,10
lea di,x_ascii
sub ax,ax
v1: mul si
mov bp,ax
mov al,[di]
sub al,48
inc di
mov ah,ch
add ax,bp
loop v1
ret
des_2 endp
bin_dis proc
;Процедура вывода на экран двоичного числа
lea di,buf
mov cx,16
mov bx,ax
mov dx,ax
conv:
mov al,ch
shl dx,1
adc al,'0'
stosb
loop conv
mov ah,9h
lea dx,buf
int 21h
mov ax,bx
ret
bin_dis endp
;Процедура перевода числа(двоичного)в шестнадцатеричную
;и вывод его на экран
outhex:
mov ch,al
mov al,ah
mov ah,2
call prnbh
mov al,ch
prnbh:
mov dh,al
shr al,1
shr al,1
shr al,1
shr al,1
call prnd
mov al,dh
and al,15
prnd:
or al,48
cmp al,58
jc prnc
add al,7
prnc:
mov dl,al
int 33
ret
end g_k
Примечания:
Ниже приведины команды использовались в программе:
sub – двоичное вычитание. Вычитается из первого операнда содержимое второго операнда
Мнемоника: sub <операнд 1>,<операнд 2>
call – вызов процедуры. Передает управление процедуре адрес которой задан операндом, после завершения процедуры, выполнение продолжается командой следующей за командой call
Мнемоника: call <имя процедуры>
ret – возврат к процедуре
shr – сдвинуть логически вправо
xor – исключающее ИЛИ
Мнемоника: xor ,
lea – загрузить ЕА
Мнемоника: lea reg,
push – включить в stack
Мнемоника: push <операнд>
pop – извлечь из stack
Мнемоника: pop
mov – переслать
Мнемоника: mov <приемник>,
inc – увеличение на 1
Мнемоника: inc
dec – уменьшение на 1
Мнемоника: dec <операнд>
stosb – пересылает соединения регистра al или ax на который указывает регистр di
loop – команда организации цикла со счетчиком, также короткие переходы (127б) команда уменьшает значение счетчика cx, без изменения каких-либо флагов, если соединение cx >0, то осуществляется переход на заданную метку, в противном случае цикл завершается.
Мнемоника: loop <метка>
.CODE – открывает сегмент кода
.DATA -- открывает сегмент данных
.STACK N – определяет сегмент stack(а); дерективы закрытия сегментов в этом случае не используются; N – показывает размер stack(a) в байтах
Примечание: при использовании таких деректив регистр ds инициализируется следующим образом: mov ax,@data
mov ds,ax
assume в этом случае не используется
Список литературы
-
"Я зык ассемблера для IBM PC и программирования" Высшая школа 1992.
-
"Персональный компьютер Фирмы IBM и операционная система MS-DOS" Радио и связь 1991.
-
Илюшечкин В.Н., Костин А.Е, Хохлов М.М. “Системное программное обеспечение“, М ., “Высшая школа”, 1987 г.
-
Нортон П., Соухэ Д. “Язык ассемблера для IBM PC”, М., Издательство “Компьютер”,1993