Родились сегодня:
FOXhunter


Лидеры рейтинга

ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

313

Россия, пос. Теплоозёрск, ЕАО


ID: 401284

Михаил Александров

Советник

302

Россия, Санкт-Петербург


ID: 400669

epimkin

Профессионал

248


ID: 405049

vsetin

Студент

159


ID: 137394

Megaloman

Мастер-Эксперт

120

Беларусь, Гомель


ID: 325460

CradleA

Мастер-Эксперт

76

Беларусь, Минск


ID: 226425

Konstantin Shvetski

Модератор

71

Россия, Северодвинск


8.9.7

28.07.2021

JS: 2.9.14
CSS: 4.5.14
jQuery: 3.6.0
DataForLocalStorage: 2021-07-31 21:16:01-standard


Создание программ на языке Assembler.

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

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

Раздел: Assembler
Автор вопроса: goldkipia (Посетитель)
Дата: 22.04.2021, 09:58 Консультация закрыта
Поступило ответов: 1

Уважаемые эксперты! Пожалуйста, ответьте на вопрос:Разработать на ассемблере и отладить программу, которая выполняет:
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

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

Т.к. задание "придумано" не корректно использован компилятор 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
Мини-форум консультации # 200696

Нет сообщений в мини-форуме

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

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

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 130

Коцюрбенко Алексей Владимирович

Старший модератор

Рейтинг: 40

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 0

Evgen aka Chuma

6-й класс

Рейтинг: 0

cain52

3-й класс

Рейтинг: 0

Kdsfofwe21

2-й класс

Рейтинг: 0