Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2017, 10:59   #1
MarinaAni
Новичок
Джуниор
 
Регистрация: 19.05.2017
Сообщений: 4
По умолчанию Ассемблер 5 строк

Добрый день, прошу подсказку в решении. Есть код, в нем нужно что-то подправить, чтобы символы выводились в 5 столбиков и 5 строчек. Сейчас они выводятся в строке -10 символов, а строки заканчиваются, когда заканчиваются символы
Код:
Start:
	mov ax0B800h
	mov es,ax
	mov al,48
	mov ax,31
	mov cx,10
	mov di,0
Next_screen:
	call Out_chars
	inc al
	add di,140
	loop Next_screen

	mov ah,10h
	int 16h

	int 20h

; === Подпрограммы ===

Out_chars proc
	mov dx,cx
	mov cx,10

Next_face:
	mov es:[di],ax
	add di,2
	loop Next_face
	
	mov cx,dx
	ret
Out_chars endp

CSEG ends
end Start
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 19.05.2017 в 11:10.
MarinaAni вне форума Ответить с цитированием
Старый 19.05.2017, 11:04   #2
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Какой удобный 16-битный дебаггер есть?
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 19.05.2017, 11:08   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Цитата:
Сообщение от MarinaAni Посмотреть сообщение
mov al,48
- а эта зачем строка, если в следующей строке другое число записывается в регистр ax.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 19.05.2017, 11:44   #4
MarinaAni
Новичок
Джуниор
 
Регистрация: 19.05.2017
Сообщений: 4
По умолчанию

Такой код дал преподаватель, не знаю ответа на ваш вопрос
Кол-во символов в строке удалось изменить. Не могу понять как поменять Кол-во строк
MarinaAni вне форума Ответить с цитированием
Старый 19.05.2017, 11:50   #5
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 735
По умолчанию

Цитата:
Сообщение от MarinaAni Посмотреть сообщение
mov ax, B800h
- в этой строке ",", а не 0.
Напишу программу на C++ и Asm для AVR. Черчение: sergeisky@yahoo.com.
Cuprum5 вне форума Ответить с цитированием
Старый 19.05.2017, 12:18   #6
MarinaAni
Новичок
Джуниор
 
Регистрация: 19.05.2017
Сообщений: 4
По умолчанию

Это поможет сделать 5 строк?
MarinaAni вне форума Ответить с цитированием
Старый 19.05.2017, 13:17   #7
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Код:
Start:
      push  0B800h
      pop   es
      mov   di,0             ; ES:DI = 0B800:0000h (видео\буфер)
      mov   al,'A'           ; начальный символ
      mov   ah,0Ah           ; цвет символа на экране
      mov   cx,10            ; счётчик символов
Next_screen:
      call  Out_chars        ; выводим очередной символ
      inc   al               ; сл.символ в AL
      dec   cx               ; счётчик -1
      cmp   cx,5             ; вывели 5 символов?
      jne   @00              ; нет!
      mov   di,160           ; иначе: переход на сл.строку
@00:  cmp   cx,0             ; все символы вывели?
      jne   Next_screen

      mov   ax,0             ; ждём клаву..
      int   16h
      int   20h              ; на выход!

; === Подпрограммы =======================

Out_chars  proc
      mov   es:[di],ax       ; выводим символ на экран
      add   di,2             ; сл.позиция в окне
      ret                    ; выход и процедуры
Out_chars  endp

CSEG ends
end Start
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 19.05.2017, 13:22   #8
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от MarinaAni Посмотреть сообщение
сделать 5 строк?
Код:
CSEG  SEGMENT PARA 'Code'
        ASSUME  CS:CSEG,DS:CSEG,ES:CSEG
        ORG     100H
Start:
	mov ax,0B800h
	mov es,ax
	mov al,48
	mov ah,31
	mov cx,5
	mov di,0
Next_screen:
	call Out_chars
	inc al
	add di,150
	loop Next_screen

	mov ah,10h
	int 16h

	int 20h

; === Подпрограммы ===

Out_chars proc
	mov dx,cx
	mov cx,5

Next_face:
	mov es:[di],ax
	add di,2
	loop Next_face
	
	mov cx,dx
	ret
Out_chars endp

CSEG ends
end Start

R71MT, сорри, когда писал ответ, ваш пост не увидел.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.05.2017, 13:38   #9
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Цитата:
Сообщение от Cuprum5 Посмотреть сообщение
Какой удобный 16-битный дебаггер есть?
TurboDebugger, AFDPro, AVPutil, CodeView - выбирай на вкус...
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Старый 19.05.2017, 13:40   #10
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

Serge_Bliznykov, всё ОК! Почти в одно время запостили..
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Для матрицы из 3 столбцов и 7 строк отпечатать номера тех строк, в которых третий элемент больше суммы двух других элементов строк abramov Помощь студентам 2 03.12.2013 10:15
Работа с массивами строк. Вывести строки, содержащие не более N символов. Ассемблер RACOST Помощь студентам 1 01.07.2012 10:03
Ассемблер. выравнивание строк.... sasha0123 Помощь студентам 2 05.12.2010 13:52
(Ассемблер)Ввод\вывод строк, удаление лишних пробелов... Марияzzz Помощь студентам 0 28.04.2010 20:01
ассемблер, вывод строк M@Z@X@K@ Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 3 21.04.2010 19:57