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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.05.2014, 20:27   #1
zlobrik
Пользователь
 
Регистрация: 28.12.2013
Сообщений: 24
По умолчанию Перевод чисел Assembler

Надобно перевести два двузначных числа из восьмеричной в десятичную систему счисления.
Вот мои наработки:
Код:
;-------Сегмент данных---------------------
	DATASG		SEGMENT	PARA	'Data'
	message	DB		"Введите две восьмеричные цифры,$"
	tab1	DB	30h dup (0),0,1,2,3,4,5,6,7,  7h  dup  (0)
		DB	0ah,0bh,0ch,0dh,0eh,0fh,  1ah  dup  (0)
		DB	0ah,0bh,0ch,0dh,0eh,0fh,  99h  dup  (0)
p1 db ?
p2 db ?
	DATASG		ENDS				;Конец сегмента данных
	;------------------------Сегмент стека---------------------
	STK		SEGMENT	STACK
	DB		256	DUP ('?')			;сегмент стека
	STK			ENDS				;Конец сегмента стека
	;------------------------Сегмент кода---------------------
	CODE		SEGMENT	PARA	PUBLIC	'CODE'
	MAIN		PROC	FAR				;начало процедуры MAIN
	ASSUME	CS:CODE, DS:DATASG, SS:STK
	MOV		AX,DATASG				;адрес сегмента данных в регистр АХ
	MOV		DS,AX					;AX в DS
	LEA		BX,tab1					;загрузка адреса строки байт в регистр ВХ
	MOV 		AH,9					;функция DOS 09h - вывод строки на дисплей
	MOV		DX,offset message			;адрес выводимой строки
	int		21h					;вызов DOS
	SUB		AX,AX					;очистить регистр АХ
	MOV		AH,1h					;функция DOS 01h - ввод символа с клавиатуры
	int		21h					;вызов DOS: вводим первую цифру в AL
	mov p1,al
	MOV		AH,1h					;функция DOS 01h - ввод символа с клавиатуры
	int		21h					;вызов DOS: вводим вторую цифру в AL
	mov p2,al
sub p1,30h
sub p2,30h
mov al,10
mul p1
add al,p2 
0 1 2 3 4 5 6 7 0 0 8 9 10 11 12 13 14 15 16 17 0 0 20 21 22 23 24 25 26 27 0 0 30



XLAT							;перекодировка первого введенного символа в AL
	MOV		DL,AL				
	SHL		DL,4					;сдвиг DL влево для освобождения места для 
								;младшей цифры
	int		21h					;вызов DOS: ввод второго символа в AL
	XLAT							;перекодировка второго введенного символа в AL
	ADD		AL,DL					;складываем для получения результата
	MOV		AX,4C00h				;завершение работы программы
	int		21h					;вызов DOS
	MAIN	ENDP						;конец процедуры MAIN 
	CODE	ENDS						;конец сегмента кода
END	MAIN							;конец программы с точкой входа MAIN
НО я не знаю что дальше и вполне мог что-то упустить. Надеюсь на помощь.
zlobrik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Assembler. Перевод числа. Corpinccom Помощь студентам 0 07.05.2011 14:55
Assembler. перевод. Corpinccom Помощь студентам 0 19.04.2011 21:00
Assembler. Перевод числа. Corpinccom Помощь студентам 3 18.04.2011 18:42
Перевод из двоичной системы в двоично-десятичную (assembler) Dolgan Фриланс 2 27.01.2011 18:01