Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вывод строки в заданной позиции - Ассемблер

54K
02 декабря 2009 года
alex1990
2 / / 02.12.2009
Есть программа, выводящая текст на экран в заданной позиции (строка, столбец)
Вот ее код:
Код:
.model tiny    
.stack 100h
   
.data      
    txt       db   'СТРОКА СИМВОЛОВ' 
    ln        equ $-txt
    npage  db   0  
    row     db   19     ; строка
    col      db   60    ; столбец
   
.code      
beg:     mov  ax, @data
     mov  ds, ax   
     mov  es, ax
   
     mov  ax, 0600h     ; прокрутка экрана вверх
     mov  bh, 17h  
     mov  cx, 0000h     ; координаты очищаемого экрана от 00, 00
     mov  dx, 184fh     ; до 24, 79 (весь экран)
     int     10h   
     mov  ax, 0600h     ; очистка окна
     mov  bh, 0 ; атрибут  окна
     int     10h   


     mov  ah, 13h   ; функция вывода на экран
     mov  al, 0     ; использовать атрибут и не перемещать курсор
     mov  bh, npage     ; страница
     mov  bl, 07h   ; атрибут(стандартный)
     mov  cx, ax ptr ln     ; длина строки

     mov  dh, row   ; координаты на экране
     mov  dl, col   ;
     lea    bp, txt     ; адрес строки
     int    10h

   
     mov  ax, 4c00h
     int     21h   
end beg

Требуется организовать при этом ввод координат с клавиатуры, то есть переменным row и col присвоить значения двух чисел, вводимых с клавиатуры.
Я в Ассемблере чайник, помогите, пожалуйста!
14K
03 декабря 2009 года
shoorick
48 / / 07.06.2006
прочитай строку с экрана (ф-я дос 0АН), преобразуй в число - и всё
54K
04 декабря 2009 года
alex1990
2 / / 02.12.2009
Цитата: shoorick
прочитай строку с экрана (ф-я дос 0АН), преобразуй в число - и всё



А можете подробнее объяснить, если не трудно?

14K
04 декабря 2009 года
shoorick
48 / / 07.06.2006
ну, как вариант:
Код:
mov [buff],3 ; вводим строку в буфер не более 2х символов
    mov ah,10
    mov dx,buff
    int 21h
    ; предполагаем, что ввели непустую строку только из цифр
    and word [buff + 2],0F0Fh ; отделяем значение цифр от кодов ascii
    xor ax,ax
    xor dx,dx
    mov al,[buff + 2] ; левая цифра в al
    cmp [buff + 1],2
    jne @F
    mov cx,ax
    mov dl,[buff + 3]
    add ax,ax
    add ax,ax
    add ax,cx
    add ax,ax ; умножаем ах на 10
    add ax,dx ; прибавляем правую цифру
@@:    
    ; в ах - введенное пользователем число
   
...

buff  rb 4
;)
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог