IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

 
 Ответить  Открыть новую тему 
> Вывод символов Ascii, по 80 символов в строке
Jaxx
сообщение 2.05.2005 15:05
Сообщение #1


Пионер
**

Группа: Пользователи
Сообщений: 145
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Необходимо вывести все символы таблицы ASCII на экран, по 80 символов в каждой строке.


--------------------
- Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 2.05.2005 23:49
Сообщение #2


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


.model tiny

.code
.startup
mov ax,3 ;не сработает на MDA (сэкономил на объёме кода) :/
int 10h
mov ax,0B800h
mov es,ax
mov ah,7
xor di,di
cld
put_char:
stosw
inc al
jnz put_char
mov ah,4Ch
int 21h

end



--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jaxx
сообщение 3.05.2005 9:17
Сообщение #3


Пионер
**

Группа: Пользователи
Сообщений: 145
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Програмулина работает, но с небольшим косяком. Косяк в следующем:
файл СОМ лежит на диске С, в корне. Запускаем DOS, переходим на диск С, появляется C:>\, и при запуске проги эта ерундовина остается, поэтому получается следующее:
Код

☺☻♥♦♣♠•◘○◙♂♀♪♫☼►◄↕‼¶§▬↨↑↓→←∟↔▲▼ !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO
C:\>TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~⌂АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯ
абвгдежзийклмноп░▒▓│┤╡╢╖╕╣║╗╝╜╛┐└┴┬├─┼╞╟╚╔╩╦╠═╬╧╨╤╥╙╘╒╓╫╪┘┌█▄▌▐▀рстуфхцчшщъыьэюя
ЁёЄєЇїЎў°∙·√№¤■ 

То есть, C:>\ закрывает 4 символа. Можно ли сделать какую-нибудь очистку экрана перед выводом символов, или еще что-нибудь?
И кстати, что такое MDA?

Сообщение отредактировано: Jaxx - 3.05.2005 9:18


--------------------
- Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
FreeMan
сообщение 4.05.2005 15:02
Сообщение #4


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


тогда надо чтоб вывод был с третьей строчки.
вместо
xor di,di
написать
mov di,6*80

ну а объём сократить, поставив вместо

mov ah,4Ch
int 21h
просто
ret


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jaxx
сообщение 5.05.2005 12:23
Сообщение #5


Пионер
**

Группа: Пользователи
Сообщений: 145
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Я мыслю, что будет лучше сделать в каждой строке по 64 символа, тогда получится красивый квадратик. Это все дело нужно выводить не на первой строке, а начиная со второй. А разве в Асме нет аналога паскалевского CLRSCR?


--------------------
- Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Dark
сообщение 9.05.2005 9:58
Сообщение #6


Знаток
****

Группа: Пользователи
Сообщений: 408
Пол: Мужской

Репутация: -  3  +


заполни экран пробелами. В цикле =)))


--------------------
- Где я?
- Во тьме.
- В какой тьме?
- Во тьме твоего мозга.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
FreeMan
сообщение 10.05.2005 15:06
Сообщение #7


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


можно перейти на др. видеостраницу, там обычно пусто. или сделать прокрутку экрана... но лучше - пробелами


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
FreeMan
сообщение 12.05.2005 15:28
Сообщение #8


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


.model tiny

.code
.startup
mov ax,3;не сработает на MDA (сэкономил на объёме кода) :/
int 10h
mov ax,0B800h
mov es,ax
mov ah,' '
xor di,di
               mov cx,7d0h
cld
put_char:
stosw
               dec cx
               jnz put_char
;тут можно ещё поставить ожидание нажатия на кгопку, но я прерывание забыл
ret
end

чистит экран. заметь, что это просто нагло содрано у xds.


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
xds
сообщение 12.05.2005 15:31
Сообщение #9


N337
****

Группа: Пользователи
Сообщений: 737
Пол: Мужской

Репутация: -  26  +


При вызове int 10h/ah=0 экран всегда автоматически очищается (даже если устанавливаемый видеорежим совпадает с текущим).

Экран очищается, 64 символа в строке, перед завершением курсор перемещается в начало шестой строки экрана (для любителей нарушать рекомендации, выход осуществляется с помощью ret):

.model tiny

.code
.startup
mov ax,3
int 10h
mov ax,0B800h
mov es,ax
mov ah,70h
mov di,176
cld
mov dx,4
put_line:
mov cx,64
put_char:
stosw
inc al
loop put_char
add di,(80-64)*2
dec dx
jnz put_line
mov ah,2
xor bx,bx
mov dh,5
int 10h
ret

end



P.S. MDA - Monochrome Display Adaptor


--------------------
The idiots are winning.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jaxx
сообщение 13.05.2005 12:07
Сообщение #10


Пионер
**

Группа: Пользователи
Сообщений: 145
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


XDS, твой последний вариант отлично справляется со своей задачей. Сенкс!
Только напоследок вопрос: при запуске вылазиет ошибка NTVDM, 16 -разрядная система MS-DOS и тд и тп...Окошко ошибки в прикрепленном файле. Как с этим бороться?Прикрепленное изображение


--------------------
- Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jaxx
сообщение 16.05.2005 9:52
Сообщение #11


Пионер
**

Группа: Пользователи
Сообщений: 145
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Есть такой вариант:
.model tiny
.code
org 100h
start:
 mov cx,256
 mov dl,0
 mov ah,2
cloop:
 int 21h
 inc dl
 test dl,0Fh
 jnz continue_loop
 push dx
 mov dl,0Dh
 int 21h
 mov dl,0Ah
 int 21h
 pop dx
continue_loop:
 loop cloop
 ret
end start

Проверьте. Тут вывод по 16 символов в строке, но суть не в этом. У меня почему-то программа идет по бесконечному циклу. И вдобавок с музыкой smile.gif после каждого цикла.


--------------------
- Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
FreeMan
сообщение 17.05.2005 17:09
Сообщение #12


-
****

Группа: Пользователи
Сообщений: 480
Пол: Мужской

Репутация: -  4  +


сделай в начале цикла
push cx
, а в конце
pop cx


--------------------
бб
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Jaxx
сообщение 18.05.2005 8:54
Сообщение #13


Пионер
**

Группа: Пользователи
Сообщений: 145
Пол: Мужской
Реальное имя: Павел

Репутация: -  0  +


Нашел полностью рабочий вариант. Даже с оформлением. Может, кому пригодится.
model tiny 	 
codeseg  
startupcode  
mov ax,3  
int 10h  
mov ax,0b800h  
mov es,ax
mov dl,16
mov ah,0bh
mov al,0
mov cx,255
mov bx,166

rus:
mov es:[bx],ax  
add al,1  
add bx,6
cmp dl,al  
jnz rrr  
add bx,64
add dl,16
rrr:
loop rus  
mov ah,14
mov al,'0'
mov cx,16
mov bx,6
mov dl,':'
mov di,160
stroka:
mov es:[bx],ax
mov es:[di],ax
add di,160
add al,1
add bx,6
cmp al,dl  
jnz ddd  
mov al,'A'
mov dl,'G'
ddd:
loop stroka  
       MOV AH,0
       INT 16h  
       INT 20h    
end


--------------------
- Дорогие девушки! У вас сухая кожа? Редкие волосы? Проблемы с фигурой? Приходите к нам! У нас темно и мы пьяные.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
MixRin.RU$
сообщение 22.01.2006 23:31
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 26
Пол: Мужской
Реальное имя: Михаил

Репутация: -  0  +


насчет перевода курсора на третью строчку - функция 02h int 10h
ВХОД:
AH = 02h
BH = номер видеостраницы
DH = номер строки (00h - верх)
DL = колонка (00h - левая)
есть аналогичная функция для получения позиции курсора, если надо - приведу... smile.gif

Угу, особенно это становится нужным, если учесть что вопросу уже 7 месяцев...

Сообщение отредактировано: volvo - 22.01.2006 23:34
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.06.2025 5:35
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"