Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ввод двоичного числа...

32K
28 марта 2008 года
Воланд
7 / / 22.03.2008
Написал такой алгоритм:

Код:
.8086
cseg       segment
           assume   cs:cseg
           org      0100h
start:    
           mov dx,00000000b
           mov bx,10000000b
           mov cx,8
loop1:     mov ah,1
           int 21h
           cmp al,'1'
           call d1
           cmp al,'0'
           call d2
           add dx,ax
           loop loop1
                     
           push dx

           mov ah,9
           lea dx,Mess1
           int 21h
 
           pop dx
           mov  ax,dx
           mov  cx, 10
           mov  di, offset digit
           call WToAscii
           mov  [di],byte ptr 0dh  
           inc  di
           mov  [di],byte ptr 0ah  
           inc  di
           mov  [di],byte ptr '$'  
           mov  dx, offset digit
           mov  ah, 09            
           int  21h
           mov  ah, 4ch
           int  21h
WtoAscii   proc near
           xor  dx, dx
           div  cx        
           or   ax, ax      
           jz   Done      
           push dx              
           call WToAscii      
           pop  dx                
Done:      mov  al, dl          
           or   al, '0'          
           mov  [di], al    
           inc    di
           ret
WtoAscii   endp
Digit      db 10 dup(?)
Mess1 db 10,13,' $'

d1 proc
mov ax,bx
shr bx,1
ret
d1 endp

d2 proc
mov ax,00000000b
shr bx,1
ret
d2 endp

cseg ends
end start



который должен переводить двоичное число в десятичное. Но почему-то не переводит, хотя ошибок тоже не выдаёт…Кто знает – помогите найти ошибку. заранее - Спасибо!!!
1.6K
28 марта 2008 года
Vov4ick
476 / / 01.02.2007
Транслятор проверяет ошибки синтаксиса, но никак не правильность реализации алгоритма. Попробуй этот код. Ввод строки думаю сделаешь сам. Советую функцию 1ah 21-го прерывания.
Код:
ideal
model tiny
codeseg
org 100h
start:
                cld
                mov     si,offset string
                xor     bx,bx
preobr:
                lodsb
                sub     al,'0'
                cmp     al,1
                ja      done
                shl     bx,1
                or      bl,al
                jmp     preobr
done:
                ; BX=число
                ret

string db '1010011011',0

end start
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог