Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RFpro.ru: Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты в разделе

Лысков Игорь Витальевич
Статус: Мастер-Эксперт
Рейтинг: 0
∙ повысить рейтинг »
Evgen aka Chuma
Статус: 6-й класс
Рейтинг: 0
∙ повысить рейтинг »
cain52
Статус: 3-й класс
Рейтинг: 0
∙ повысить рейтинг »

Assembler

Номер выпуска:1787
Дата выхода:02.05.2021, 10:15
Администратор рассылки:Зенченко Константин Николаевич (Старший модератор)
Подписчиков / экспертов:3 / 25
Вопросов / ответов:1 / 1

Консультация # 200696: Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Разработать на ассемблере и отладить программу, которая выполняет: 1) ввод с клавиатуры двух 4-значных шестнадцатеричных чисел (для ввода с клавиатуры можно использовать любые чис-ла), которые записываются в качестве содержимого регистров BP и DI; 2) вывод на экран содержимого регистров, запо...

Консультация # 200696:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Разработать на ассемблере и отладить программу, которая выполняет:
1) ввод с клавиатуры двух 4-значных шестнадцатеричных чисел (для ввода с клавиатуры можно использовать любые чис-ла), которые записываются в качестве содержимого регистров BP и DI;
2) вывод на экран содержимого регистров, заполненных на шаге 1, в виде шестнадцатеричных чисел;
3) вывод на экран содержимого регистров, заполненных на шаге 1, в виде десятичных чисел;
4) вывод на экран содержимого регистров, заполненных на шаге 1, в виде двоичных чисел.
Пример информации на экране:
ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА BP AD56<Enter>
ВВЕДИТЕ СОДЕРЖИМОЕ РЕГИСТРА DI 7F09<Enter>
ЧИСЛА В ШЕСТНАДЦАТЕРИЧНОЙ СИСТЕМЕ
(BP) = AD56 (DI) = 7F09
ЧИСЛА В ДЕСЯТИЧНОЙ СИСТЕМЕ
(BP) = 44374 (DI) = 32521
ЧИСЛА В ДВОИЧНОЙ СИСТЕМЕ
(BP) = 1010110101010110 (DI) = 0111111100001001

Дата отправки: 22.04.2021, 09:58
Вопрос задал: goldkipia (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Зенченко Константин Николаевич (Старший модератор):

Дорого времени суток!

Т.к. задание "придумано" не корректно использован компилятор Tasm
Смотрите код:

Код [Assembler]
model	tiny,pascal
locals	@@
code
org	100h
begin:	push	bp
@@00:	call	OutStr,offset dbInp
	call	OutStr,offset dbBp
	call	InpNum,16
	jc	@@00
	mov	bp,ax
@@01:	call	OutStr,offset dbInp
	call	OutStr,offset dbDi
	call	InpNum,16
	jc	@@01
	mov	di,ax
	call	OutStr,offset dbHex
	call	OutStr,offset dbOut
	call	OutNum,bp,16,4
	call	OutStr,offset dbDi
	call	OutNum,di,16,4

	call	OutStr,offset dbDec
	call	OutStr,offset dbOut
	call	OutNum,bp,10,5
	call	OutStr,offset dbDi
	call	OutNum,di,10,5

	call	OutStr,offset dbBin
	call	OutStr,offset dbOut
	call	OutNum,bp,2,16
	call	OutStr,offset dbDi
	call	OutNum,di,2,16
	pop	bp
	ret
OutStr	proc	a:word
uses	ax,dx
	mov	ah,9
	mov	dx,a
	int	21h
	ret
OutStr	endp
OutNum	proc	a:word,b:word,c:word
uses	ax,bx,cx,dx
	mov	ax,a
	mov	bx,b
	xor	cx,cx
@@01:	xor	dx,dx
	div	bx
	cmp	dl,10
	jb	@@02
	add	dl,7
@@02:	add	dl,'0'
	push	dx
	inc	cx
	or	ax,ax
	jnz	@@01
@@03:	cmp	cx,c
	je	@@04
	mov	al,'0'
	push	ax
	inc	cx
	jmp	@@03
@@04:	pop	ax
	int	29h
	loop	@@04
	ret
OutNum	endp
InpNum	proc	a:word
uses	bx,cx,dx
	mov	bx,a
	xor	cx,cx
@@01:	xor	ax,ax
	int	16h
	cmp	al,13
	mov	ah,al
	jz	@@04
	cmp	al,'0'
	jb	@@01
	cmp	al,'9'
	jbe	@@02
	and	ah,0DFh
	sub	ah,7
@@02:	sub	ah,'0'
	cmp	bl,ah
	jbe	@@01
	push	cx
	push	ax
	int	29H
	pop	cx
	pop	ax
	xchg	cl,ch
	xor	ch,ch
	xor	dx,dx
	mul	bx
	or	dx,dx
	jz	@@03
	stc
	jmp	@@04
@@03:	add	cx,ax
	jnc	@@01
@@04:	mov	ax,cx
	ret
inpNum	endp
dbInp	db	10,13,'Enter number $'
dbHex	db	10,13,'Heximal numbers$'
dbDec	db	10,13,'Deciimal numbers$'
dbBin	db	10,13,'Binary numbers$'
dbOut	db	10,13
dbBp	db	' [BP]=$'
dbDi	db	' [DI]=$'
	end	begin

Команды компиляции(название папок, мои, у Вас будут другие):


Пример работы:


Хранить в регистре ВР, рабочую информацию не допустимо, у него другое назначение. Он используется для создания стекового фрейма, обращения к параметрам.


Удачи!

Консультировал: Зенченко Константин Николаевич (Старший модератор)
Дата отправки: 28.04.2021, 11:42
Рейтинг ответа:

НЕ одобряю +1 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


В избранное