.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
Ввод двоичного числа...
Код:
который должен переводить двоичное число в десятичное. Но почему-то не переводит, хотя ошибок тоже не выдаёт…Кто знает – помогите найти ошибку. заранее - Спасибо!!!
Код:
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
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