0 / 0 / 1
Регистрация: 10.12.2011
Сообщений: 63
|
|||||||||||
1 | |||||||||||
[MASM] Вывод значения переменной (или содержимого регистра) на экран10.12.2011, 14:28. Показов 25619. Ответов 5
Метки нет (Все метки)
Здравствуйте!
По очень простому вопросу никак не могу найти ответ. Например пара фрагментов:
Или:
0
|
10.12.2011, 14:28 | |
Ответы с готовыми решениями:
5
Вывод содержимого регистра на экран Вывод содержимого регистра AL на экран? Вывод на экран содержимого регистра bx в 16-ричном виде Вывод содержимого регистра на экран в Windows x64 |
273 / 268 / 11
Регистрация: 24.12.2010
Сообщений: 328
|
|
10.12.2011, 15:42 | 2 |
Надо перевести содержимое al в десятичный вид, выделить цифры, добавить к каждой 30h и выводить, начиная со старшей. В данном случае, когда результат - всего одна цифра, достаточно просто добавить к ней 30h:
Код
... mov ah,2 ;Функция вывода символа. add al,30h mov dl,al ;Символ должен быть в dl. int 21h ...
0
|
0 / 0 / 1
Регистрация: 10.12.2011
Сообщений: 63
|
|
10.12.2011, 18:19 [ТС] | 3 |
Попробовал поставить $ после 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
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 |
Извините за надоедливость, но
во-первых: Если 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 ?, "$" и в третьих: Объясните пожалуйста как же мне вычесть из 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 | |
11.12.2011, 00:31 | |
Помогаю со студенческими работами здесь
6
Вывод значения регистра на экран Вывод значения регистра на экран Вывод значения переменной на экран Вывод содержимого регистра Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |