Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[13.58.121.131] |
|
Сообщ.
#1
,
|
|
|
Вопрос, конечно, неквалифицированный, но я недавно асм начал, так что
поймите меня... В AL находится значение, которое потом переводится в десятичное. Как полученное десятичное число в этом регистре обычно выводят на экран ? Я не пойму, команды stosb и stosw здесь не помогут, через прерывание что-ли... но это фигня. |
Сообщ.
#2
,
|
|
|
Вот тебе красивый примерчик. (с)В.Юров
<br>;----------------------------------------------------------<br>;prg06_07.asm - ввод с консоли десятичного числа из диапазона 0..99 и обратный его вывод на консоль.<br>;----------------------------------------------------------<br>masm<br>model small<br>.stack 256<br>.486<br>buf_0ah struc<br>len_buf db 3 ;длина buf_0ah<br>len_in db 0 ;действительная длина введенного слова (без учета 0dh)<br>buf_in db 3 dup (20h) ;буфер для ввода (с учетом 0dh)<br>ends<br>.data<br>buf buf_0ah <><br>adr_buf dd buf<br>.code<br>main:<br> mov ax,@data<br> mov ds,ax<br>;вводим 2 символа с клавиатуры, контроль на допустимые значения не делаем<br> lds dx,adr_buf<br> mov ah,0ah<br> int 21h<br> xor ax,ax<br> cmp buf.len_in,2 ;сколько чисел введено реально?<br> jne m1<br> mov ah,buf.buf_in<br>m1:<br> mov al,buf.buf_in+1<br> and ax,0f0fh ;преобразование в неупакованное десятичное представление<br> aad ;в AL двоичный эквивалент исходного двузначного десятичного значения<br>;вывод на консоль содержимого AL<br> aam<br> mov dx,ax<br> or dx,03030h<br> rol dx,8 ;выводим старшую цифру<br> mov ah,2<br> int 21h<br> rol dx,8 ;выводим младшую цифру<br> int 21h<br>exit:<br>;выход из программы<br> mov ax,4c00h ;пересылка 4c00h в регистр ax<br> int 21h ;вызов прерывания с номером 21h<br>end main ;конец программы с точкой входа main<br> |
Сообщ.
#3
,
|
|
|
Почему прерывания -- фигня? Это единственно надёжный и правильный способ в отличиии например от прямой записи в видеопамять.
|
Сообщ.
#4
,
|
|
|
Это ты типа к чему?
Вообще-то лучше в Win32 юзать Win32 API. Все равно от прерываний к ним дорожка идет. |