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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.11.2012, 15:29   #1
Starget-93
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 11
Радость Неправильный перевод из 8-ой системы счисления в 16-ую

Программа неправильно переводит числа из восьмеричной системы счисления в шестнадцатеричную.
Подскажите пожалуйста, в чем ошибка и как исправить ?
Код:
code SEGMENT
assume cs:code, ds:code
main:
        mov ax,code
        mov ds,ax
        mov si,8
again:
        mov bx,0
        mov dl,'?'
        call display
        mov cx,6
next:
        call kbin	;ввод символа в al
;compare
        cmp al, ' '     ;если al = ' ' – вывод
        je back
        cmp al, '0'     ;если al < 0 то выход
        jb exit
        cmp al, '7'     ;если al > 7 то выход
        ja exit

        mov ah,0
        and al,00001111b
        mov di,ax
        mov ax,bx
        mul si
        add ax,di
        mov bx,ax
        loop next
back:			;перевод и вывод
        add ax, 10
	mov dl,'='
        call display
        mov dx,bx
        call hexw
        mov dl,' '
        call display
        call crlf
        jmp again
exit:			;выход
        mov ax, 4c00h
        int 21h

display proc
        mov ah,2	;вывод
        int 21h
        ret
display endp

hex proc
        push dx
        lea bx,table
        mov al,dl
        shr al,4
        xlat		; преобразование ASCII-код цифры
        mov dl,al
        mov ah,2
        int 21h
         pop dx			;бывшее содержимое dx
        and al,00001111b	;младший полубайт
        xlat
        mov dl,al
        mov ah,2
        int 21h
        ret
        table db '0123456789ABCDEF'
hex endp

kbin proc
	mov ah,1	;ввод символа в al
	int 21h
	ret
kbin endp

hexw proc		;вывод в 16 виде
        mov di, dx	;сохранить dx
        mov dl, dh	;вывод старшего байта
        call hex
        mov dx, di	;восстановить dx
        call hex	;вывод dl
        mov dl,' '	;пробел
        call display
	ret
hexw endp

crlf proc
        mov dl,10	; перевод на новую строку
        call display
        mov dl,13	;возврат каретки
        call display
        ret
crlf endp

code ENDS
        end main

Последний раз редактировалось Serge_Bliznykov; 12.11.2012 в 15:54.
Starget-93 вне форума Ответить с цитированием
Старый 12.11.2012, 16:21   #2
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

Код:
         pop ax			;бывшее содержимое dx - было pop dx
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 13.11.2012, 01:15   #3
Starget-93
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 11
По умолчанию

Исправил, но к сожалению программа все равно неправильно переводит числа.
Starget-93 вне форума Ответить с цитированием
Старый 13.11.2012, 02:52   #4
Step_UA
Форумчанин
 
Аватар для Step_UA
 
Регистрация: 09.06.2011
Сообщений: 388
По умолчанию

приведите пример неправильного перевода ...
Изображения
Тип файла: jpg 8to16.JPG (5.8 Кб, 64 просмотров)
на неконкретные вопросы даю неконкретные ответы ...
Step_UA вне форума Ответить с цитированием
Старый 13.11.2012, 09:00   #5
Starget-93
Пользователь
 
Регистрация: 12.11.2012
Сообщений: 11
По умолчанию

Упс, прошу прощения, теперь все работает. Спасибо большое !
Starget-93 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перевод из 16-ой системы счисления в 10-ю. Си Nice Plant Общие вопросы C/C++ 2 29.04.2012 09:08
перевод из 5 в 10 системы счисления и обратно vrtp Общие вопросы C/C++ 7 25.12.2011 23:04
Перевод из одной системы счисления в другую колянчик1712 Помощь студентам 0 25.12.2011 15:56
Перевод из 10 в другие системы счисления. dixonich Помощь студентам 13 11.04.2011 18:13
Перевод в разные системы счисления Наташенька Общие вопросы C/C++ 2 21.12.2008 11:34