Суббота, 20.04.2024, 01:12
Приветствую Вас Гость | RSS | PDA

Всё для студента информата

Полезная информация

Материалы для студента

Всё для студента IT » Материалы для студента » Архитектура ЭВМ

Assembler. Изучение программы для преобразования двухзначного шестнадцатеричного числа в символьном виде в двоичное представление.

;Prg_3_1.asm
;Программа преобразования двухзначного шестнадцатеричного числа
;в символьном виде в двоичное представление
;Ввод: исходное шестнадцатеричное число из двух цифр
;вводится с клавиатуры
;Выход: результат помещается в регистр dl
;__________________________________________
;__________________________________________

Data segment Para Public "data”
; Para(опция выравнивания) – указывает на начало сегмента на границе параграфа, так что адрес начала нацело делится на 16 (10H).
; Public(опция совмещения) – указывает на то, что нужно скомпилировать отдельно оттранслированные программы в один модуль.
;”data” (опция класс) – используется для группировки родственных сегментов при компоновке. В данном случае указывает на сегмент данных.

Message db "Введите две шестнадцатеричные цифры, $”
; определение переменной Message
; $ - требование завершить вывод (для функции 09h, прерывания int 21h)

Data ends
Stk segment stack
; stack(опция совмещения) – указывает, что это сегмент стека
Db 256 dup ("?”)
; 256 вопросов (резервирует стек)
Stk ends
Code segment Para Public "Code”
; Para(опция выравнивания) – указывает на начало сегмента на границе параграфа, так что адрес начала нацело делится на 16 (10H).
; Public(опция совмещения) – указывает на то, что нужно скомпилировать отдельно оттранслированные программы в один модуль.
;”code” (опция класс) – используется для группировки родственных сегментов при компоновке. В данном случае указывает на сегмент кода.

Main proc
;начало процедуры main
assume cs:code, ds:data, ss:stk
; assume - для указания ассемблеру назначения каждого сегмента в программе
; cs:code – связывает регистр CS и сегмент кода
; ds:data – связывает регистр DS и сегмент данных
; ss:stk – связывает регистр SS и сегмент стека

mov ax, data
; адрес сегмента данных в регистр ах
mov ds, ax
; перемещение ax в ds
mov ah, 9
; записывает в ah - 9
mov dx, offset Message
; mov dx, offset Message – помещает в dx смещение Message относительно сегмента данных
int 21h
; вызов прерывания 21h с ранее определённым значением регистра ah=09, т.е. вывод строки.
Xor ax, ax
; очистить регистр ax
Mov ah,1h
; записать в регистр ah значение 1h
int 21h
; вызов прерывания 21h с ранее определённым значением регистра ah=01, т.е. ввод с клавиатуры с отображением на экране.
Mov dl, al
; перемещение содержимого регистра al в регистр dl
; al – содержит код состояния  после выполнения функции 01h, прерывания int 21h

Sub dl, 30h
; вычитание dl=dl-30h
Cmp dl, 9h
; сравнить dl с 9h
Jle M1
; перейти на метку M1 если dl<=9h
Sub dl, 7h
; вычитание dl=dl-7h
M1:
; определение метки M1
Mov cl, 4h
; записать в регистр cl значение 4h
Shl dl, cl
; сдвиг в содержимого dl на 4 разряда влево
int 21h
; вызов прерывания 21h с ранее определённым значением регистра ah=01, т.е. ввод с клавиатуры с отображением на экране.
Sub al, 30h
; вычитание al=al-30h
Cmp al, 9h
; сравнение al c 9h
Jle M2
; перейти на метку M2 если al<=9h
Sub al, 7h
; вычитание al=al-7h
M2:
; определение метки M2
Add dl, al
; сложение dl=dl+al
Mov ax, 4c00h
; пересылка 4c00h в регистр ax
int 21h
; вызов прерывания 21h с ранее определённым значением регистра ah=01, т.е. ввод с клавиатуры с отображением на экране.
Main endp
; конец процедуры main
Code ends
; конец сегмента кода
End main
; конец программы с точкой выхода main

Похожие статьи:

Не нашли то, что Вам нужно?.. Найдите ответ на форуме!
Категория: Архитектура ЭВМ | Добавил: admin (14.07.2010)
Просмотров: 1637 | Теги: задача
Сообщество
Помощь
Форма входа
Поиск

Студенческий помощник по информатике © 2024
При цитировании материалов данного сайта, обязательна ссылка на источник: ITstudents.ru



>