Ввод-вывод 21 прерывания в АСМ
Заранее спасибо
Народ, подскажите как делается вывод текста и чисел. Вернее, текста я знаю. Как вывести например целое двухбайтовое число? ф-я 02h выводит только один байт, вернее однозначное число, как я понял... А вот как вывести, например, число 0A9Ch? какой номер функции, какие регистры используются и т.д.
Заранее спасибо
//==========================
Этой же функцией в цикле можешь вывести по байтам ,и если число более чем однобайтное нужно преобразование типа в байтовый(Оператор PTR). Что-типа:
cislo dw 0A9Ch
;=============
cicl: mov bx,(byte PTR cislo)+i
;i-длина числа в байтах
;тут выводишь bx своей функцией (но если она выводит в ASCII, то нужно будет тебе преобразовывать в этот формат. )
LOOP cicl
Более красивой функции не вспомню - у меня АСМ был в прошлом семестре :)
//==========================
Этой же функцией в цикле можешь вывести по байтам ,и если число более чем однобайтное нужно преобразование типа в байтовый(Оператор PTR). Что-типа:
cislo dw 0A9Ch
;=============
cicl: mov bx,(byte PTR cislo)+i
;i-длина числа в байтах
;тут выводишь bx своей функцией (но если она выводит в ASCII, то нужно будет тебе преобразовывать в этот формат. )
LOOP cicl
Более красивой функции не вспомню - у меня АСМ был в прошлом семестре :)
Нет, это не то. ф-я 02р выводит символ на экран, в зависимости от кода, т.е. если попытаться её вывести число FF, например, она выведет "я". А вот как числа выводить, чисто числа?
Нет, это не то. ф-я 02р выводит символ на экран, в зависимости от кода, т.е. если попытаться её вывести число FF, например, она выведет "я". А вот как числа выводить, чисто числа?
Как мне помнится, нет такой фу-ции которая преобразовывает число в ASCII и выводит его.
Это надо писать свою процедуру преобразования.
По моему она есть у Зубкова в книге.
есть число(128 для примера)
Делим его на 10, прибавляем к остатку 30H и суём в
SI байт масива. Далее Dec SI. Повторяем процедуру.
Ну вобшем гдето так -
Xor DX, DX
Mov DL, Max_Chars
Mov SI, 1
itoa_1 :
Mov AX, DX
Mov BH, 10
Div BH
Add AH, 30H
Mov CurLevelA[SI], AH
Dec SI
Mov DL, AL
Cmp AL, 1
JNB itoa_1
Где Max_Chars - число которое нужно перевести, а CurLevelA - это масив для числа.
Далее вывод делается довольно просто.