![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 05.01.2010
Сообщений: 4
|
![]()
Уважаемые учасники форума, помогите пожалуйста!
У меня стоит задача такая Перевести число с десятиричного представления в шестнадцитиричное! Результат занести в табл(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 ЕЩЕ РАЗ СПАСИБО!!!!!!!!!!!!! |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 02.04.2008
Сообщений: 358
|
![]()
да, помоему числа преобразуете задом наперед, да еще не правильно
Код:
короче отлаживайте по частям
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666 mail: airyashov(а)inbox.ru |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
проверить корректно ли введено целое число | 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 |