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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2010, 10:47   #1
Steil
Пользователь
 
Регистрация: 15.05.2010
Сообщений: 14
Вопрос вывод на вторую строку экрана значения регистра

Написать на ассемблере подпрограмму вывода на вторую строку экрана значения регистра флагов в двоичной системе счисления без использования прерываний DOS и BIOS (прямой записью в видеопамять) для процессора Intel 80x86.

mov ax,0B800h
mov es,ax
mov di,0
mov es:[di],ax
std
mov cx,10
Repeat:
xor dx,dx
div cx
xchg ax,dx
add al,'0'
stosb
xchg ax,dx
or ax,ax
jne Repeat

Объясните кто-нибудь код этой проги. И вообще соответствует ли она выше написанному заданию?
Steil вне форума Ответить с цитированием
Старый 24.05.2010, 08:34   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Steil
1) mov ax,0B800h
mov es,ax <-- установка сегментного регистра ES на начало текстовой видеопамяти
mov di,0 <-- установка регистра DI на верхний левый угол
... <-- здесь должна быть передача символа в регистр AL и передача аттрибута символа в регистр AH
mov es:[di],ax <-- вывод символа в текстовую видеопамять
то что идет дальше билиберда похожая на перевод из шестнадцатеричной системы счисления в десятеричную с твоим заданием, естественно, и рядом не валялось
Mikl___ вне форума Ответить с цитированием
Старый 24.05.2010, 12:15   #3
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Код:
.286
.model tiny
.code	
org 100h
start:  mov ax,3;стираем с экрана
	int 10h
	push 0B800h
	pop es
	mov di,86
	mov si,offset string1
	mov ah,0Fh
	mov cx,len1
a1:	lodsb
	stosw
	loop a1
	add di,72
	mov cx,len2
a2:	lodsb
	stosw
	loop a2
	pushf;получаем содержимое регистра флагов
	pop bx
	mov cx,16
a3:	shl bx,1;переводим число в двоичный формат
	mov al,'0'
	adc al,0
	stosw
	loop a3
	sub ax,ax;ждем пока не нажмут любую клавишу
	int 16h
	ret
string1 db 'ODITSZ A P C';название флагов
len1 = $-string1;длина строки
string2 db 'Содержимое регистра флагов: '
len2 = $-string2
end start
Mikl___ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод значения Прохор Microsoft Office Access 1 04.05.2010 23:37
Ввод символьной строки,вывод содержимого соответствующего регистра(TASM) adgam Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 17.03.2010 08:48
Вывод старшей(младшей) части регистра Сx на монитор Mixim Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 12.01.2010 04:27
Уникальные значения в одну строку Iskin Microsoft Office Excel 9 08.03.2009 09:39
Вывод значения Febreze Общие вопросы Delphi 13 26.04.2008 07:47