.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 присвоить значения двух чисел, вводимых с клавиатуры.
Я в Ассемблере чайник, помогите, пожалуйста!
прочитай строку с экрана (ф-я дос 0АН), преобразуй в число - и всё
Цитата: shoorick
прочитай строку с экрана (ф-я дос 0АН), преобразуй в число - и всё
А можете подробнее объяснить, если не трудно?
Код:
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
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