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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.01.2010, 19:49   #1
Maemi_IT
 
Регистрация: 05.01.2010
Сообщений: 4
По умолчанию Результат перевода из 10й сис-мы в 16-ю занести в табл(10-е число - 16), до тех пор пока не будет введено

Уважаемые учасники форума, помогите пожалуйста!

У меня стоит задача такая
Перевести число с десятиричного представления в шестнадцитиричное! Результат занести в табл(10-е число - 16), до тех пор пока не будет введено число 000000.По окончанию программы(нажатия клавиши esc) табл вывести на экран.

Сам перевод у меня есть. А все остальное не получается! Помогите пожалуйста! Заранее благодарна! Вот сам перевод

;ПРОГРАММА ПЕРЕВОДА ДЕСЯТИЧНОГО ЧИСЛА В ;ДВОИЧНУЮ И ШЕСТНАДЦАТЕРИЧНУЮ
СИСТЕМЫ ;СЧИСЛЕНИЯ
.MODEL small
.STACK 64
.DATA
;Сегмент данных
;__________________________________ __________________________________
;Таблица преобразования “цифра – ASCII-код”
org 100h
tabl_ascii db '0123456789abcdef'
;__________________________________ __________________________________
;Таблица преобразования “ASCII-код - цифра”
org 130h
db 0,1,2,3,4,5,6,7,8,9
org 41h
db 0ah,0bh, 0ch, 0dh, 0eh, 0fh
;__________________________________ __________________________________
;Резервация и инициализация переменных в памяти
org 150h
x_ascii db 20h dup(?)
t1 db 0dh,0ah,"Введите число и нажмите Enter"
db 0dh, 0ah, "$"
t2 db 0dh,0ah,"Вы ввели число",0dh,0ah, "$"
t3 db 0dh, 0ah, "В двоичной системе оновыглядет так"
db 0dh,0ah,"$"
t4 db 0dh, 0ah, "В шестнадцатеричной так"
db 0dh, 0ah, "$"
buf db 16 dup(?),"$"
t5 db 0dh,0ah, "Будем продолжать процесс?(Y/N)?"
db 0dh,0ah,"$"
;__________________________________ __________________________________
;Сегмент кодов
.CODE
;Главная процедура
g_k proc
mov ax,@data
mov ds, ax
mov es, ax
d: lea dx, t1
mov ah,09h
int 21h
lea di, x_ascii
call ink
call des_2
push ax
lea dx,t3
mov ah,9h
int 21h
pop ax
call bin_dis
push ax
lea dx,t4
mov ah,9h
int 21h
pop ax
call outhex
lea dx,t5
mov ah,9h
int 21h
mov ah,1h
int 21h
cmp al,"Y"
loope d
cmp al,"y"
loop d
mov ah,4ch
int 21h
g_k endp
ink proc
;Процедура ввода десятичного числа
xor cx,cx
l1:
mov ah,1
int 21h
stosb
inc cx
cmp al,0dh
jnz l1
dec cx
ret
ink endp
dis proc
;Процедура вывода на экран десятичного числа
r1: mov dl,[di]
mov ah,2
int 21h
inc di
loop r1
ret
dis endp
des_2 proc
;Перевод числа(десятичного) в двоичную систему
mov si,10
lea di,x_ascii
sub ax,ax
v1: mul si
mov bp,ax
mov al,[di]
sub al,48
inc di
mov ah,ch
add ax,bp
loop v1
ret
des_2 endp
bin_dis proc
;Процедура вывода на экран двоичного числа
lea di,buf
mov cx,16
mov bx,ax
mov dx,ax
conv:
mov al,ch
shl dx,1
adc al,'0'
stosb
loop conv
mov ah,9h
lea dx,buf
int 21h
mov ax,bx
ret
bin_dis endp
;Процедура перевода числа(двоичного)в шестнадцатеричную
;и вывод его на экран
outhex:
mov ch,al
mov al,ah
mov ah,2
call prnbh
mov al,ch
prnbh:
mov dh,al
shr al,1
shr al,1
shr al,1
shr al,1
call prnd
mov al,dh
and al,15
prnd:
or al,48
cmp al,58
jc prnc
add al,7
prnc:
mov dl,al
int 33
ret
end g_k

ЕЩЕ РАЗ СПАСИБО!!!!!!!!!!!!!
Maemi_IT вне форума Ответить с цитированием
Старый 11.01.2010, 21:27   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
По умолчанию

да, помоему числа преобразуете задом наперед, да еще не правильно
Код:
des_2 proc
;Перевод числа(десятичного) в двоичную систему
mov si,10
lea di,x_ascii
sub ax,ax
v1: mul si
mov bp,ax
mov al,[di]
sub al,48
inc di
mov ah,ch
add ax,bp
loop v1
ax сбивается постоянно
короче отлаживайте по частям
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
проверить корректно ли введено целое число slips Общие вопросы C/C++ 3 22.04.2009 09:23
Как записать, чтобы ячейка выдавала то же число, что введено в другой? abdumanon Microsoft Office Excel 6 09.04.2009 16:05
Машина случайным образом генерирует натуральные числа в промежутке [0, 1, 2, … 10] до тех пор, пока не 0 JustinTI Помощь студентам 3 21.12.2008 14:31
процедура, которая будет что-то делать пока зажата клавиша пробел. Porkman Паскаль, Turbo Pascal, PascalABC.NET 4 14.12.2008 03:37