На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Перед отправкой сообщения внимательно прочтите правила раздела!!!
1. Запрещается обсуждать написание вирусов, троянов и других вредоносных программ!
2. Помните, что у нас есть FAQ раздела Assembler и Полезные ссылки. Посмотрите, возможно, там уже имеется решение вашего вопроса.

3. Настоятельно рекомендуем обратить особое внимание на правила форума, которые нарушаются чаще всего:
  3.1. Заголовок темы должен кратко отражать её суть. Темы с заголовками типа "Срочно помогите!" или "Ассемблер" будут отправляться в Корзину для мусора.
  3.2. Исходники программ обязательно выделяйте тегами [code]...[/code] (одиночные инструкции можно не выделять).
  3.3. Нежелательно поднимать старые темы (не обновлявшиеся более года) без веской на то причины.

Не забывайте также про главные Правила форума!

Добро пожаловать и приятного вам общения!!! ;)
 
Модераторы: Jin X, Qraizer
  
> вывод на экран
    Вопрос, конечно, неквалифицированный, но я недавно асм начал, так что
    поймите меня... :)
    В AL находится значение, которое потом переводится в десятичное.
    Как полученное десятичное число в этом
    регистре обычно выводят на экран ? Я не пойму, команды stosb и stosw здесь
    не помогут, через прерывание что-ли... но это фигня.
      Вот тебе красивый примерчик. (с)В.Юров

      ExpandedWrap disabled
        <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>
        Почему прерывания -- фигня? Это единственно надёжный и правильный способ в отличиии например от прямой записи в видеопамять.
          Это ты типа к чему? ;)
          Вообще-то лучше в Win32 юзать Win32 API. Все равно от прерываний к ним дорожка идет.
          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
          0 пользователей:


          Рейтинг@Mail.ru
          [ Script execution time: 0,0199 ]   [ 15 queries used ]   [ Generated: 27.04.24, 06:00 GMT ]