Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/131: Рейтинг темы: голосов - 131, средняя оценка - 4.59
0 / 0 / 1
Регистрация: 10.12.2011
Сообщений: 63
1

[MASM] Вывод значения переменной (или содержимого регистра) на экран

10.12.2011, 14:28. Показов 25619. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

По очень простому вопросу никак не могу найти ответ. Например пара фрагментов:
Assembler
1
2
3
4
5
6
7
mov al, 5
add al, 3
mov ah, 9h
mov dx, offset string
int 21h
int 20h
string db "Сумма = ", "$"
Как вывести содержимое регистра al на экран
Или:
Assembler
1
2
3
4
5
6
7
8
mov al, 5
add y, al
mov ah, 9h
mov dx, offset string
int 21h
int 20h
string db "Сумма = ", "$"
y db 4
Как вывести содержимое переменной на экран. Дело в том, что в отладчике всё видно, а вот как результаты вывести на экран - не знаю.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.12.2011, 14:28
Ответы с готовыми решениями:

Вывод содержимого регистра на экран
Вопрос глупый, но нигде не могу найти однозначный ответ. Как мне вывести чисто в ax на экран? org...

Вывод содержимого регистра AL на экран?
Как можно сделать? Добавлено через 50 минут TITLE SPO_PROJECT (COM) .MODEL SMALL .CODE...

Вывод на экран содержимого регистра bx в 16-ричном виде
Добрый вечер всем. Имеется код подсчета двоичных нулей в переменной размером двойное слово. Не могу...

Вывод содержимого регистра на экран в Windows x64
ДОСовское int 21h не работает, потому что винда не поддерживает 16-битные приложения. Есть ли...

5
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
10.12.2011, 15:42 2
Цитата Сообщение от paltusssss Посмотреть сообщение
Как вывести содержимое регистра al на экран
Надо перевести содержимое al в десятичный вид, выделить цифры, добавить к каждой 30h и выводить, начиная со старшей. В данном случае, когда результат - всего одна цифра, достаточно просто добавить к ней 30h:
Код
	...
	mov ah,2	;Функция вывода символа.
	add al,30h
	mov dl,al	;Символ должен быть в dl.
	int 21h
	...
Цитата Сообщение от paltusssss Посмотреть сообщение
Как вывести содержимое переменной
Опять же добавить к переменной y 30h, символ '$' убрать, поставить его после y и выводить string 9 функцией.
0
0 / 0 / 1
Регистрация: 10.12.2011
Сообщений: 63
10.12.2011, 18:19  [ТС] 3
Цитата Сообщение от paltusssss Посмотреть сообщение
Как вывести содержимое переменной на экран.
Цитата Сообщение от Ant1971on Посмотреть сообщение
Опять же добавить к переменной y 30h, символ '$' убрать, поставить его после y и выводить string 9 функцией.
Попробовал поставить $ после y:
Код
   mov al, 3
   add y, al
   mov ah, 9h
   add y, 30h
   mov dx, offset string
   int 21h
   int 20h
string db "summa = ", y, "$"
y db 6
Выдает ошибку initializer magnitude too large for specified size на строку со словом string db
0
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
10.12.2011, 18:53 4
так напишите:
Код
string	db 'summa = '
y	db 6,'$'
0
0 / 0 / 1
Регистрация: 10.12.2011
Сообщений: 63
10.12.2011, 23:00  [ТС] 5
Цитата Сообщение от Ant1971on Посмотреть сообщение
так напишите:
Код
string	db 'summa = '
y	db 6,'$'
Извините за надоедливость, но
во-первых:
Если 2-я функция 21-го прерывания выводит значение загруженное в dl, то получается число не может быть более 255. А что если оно более 255-ти?

во вторых:
Попробовал ввести такой код:
Код
mov ax, 1000
add ax, 657
mov y, ax
mov ah, 9h
add y, 30h
mov dx, offset string
int 21h
int 20h
string db "Сумма = "
y dw ?, "$"
Вместо результата 1657 в десятичной или 679 в шестнадцатеричной - появилась буква "й" и карточный значок "пики". Ведь команда add y, 30h изменила код с 679 на 06A9. Как же быть?
и в третьих:
Объясните пожалуйста как же мне вычесть из 32 - 121. В отладчике появляется невесть что и результат -89 не получается.

Спасибо за терпение!
0
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
11.12.2011, 00:31 6
Во-первых, Вы уж определитесь, какая у Вас переменная, байт или слово. Если байт, то каким образом Вы собираетесь туда запихнуть 1657? Во-вторых, я же написал выше, что простое добавление 30h годится только для вывода одной цифры, если результат больше 9, надо преобразовать его в десятичный вид, далее к каждой выделенной цифре прибавлять 30h и выводить. Как это делается, подробно описано здесь.
0
11.12.2011, 00:31
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.12.2011, 00:31
Помогаю со студенческими работами здесь

Вывод значения регистра на экран
Помогите пожалуйста разобраться с программой которая выводит значение(десятичное) регистра ax на...

Вывод значения регистра на экран
Как в FASM'e вывести на экран значение какого-нибудь регистра?

Вывод значения переменной на экран
Имею класс: #include <iostream> using namespace std; // определение класса комплексных чисел...

Вывод содержимого регистра
я ввел строку с клавиатуры, и проверяю каждый символ, если символ равен пробелу то я увеличиваю...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru