该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
运行不出来,求找茬
data segment
A db 0
B db 0
C db 0
buf db 3
db 0
inn db 3 dup(0)
msg0 db 0dh, 0ah, 'Input number<99:$'
msg1 db 0dh, 0ah, 'The middle number (in Binary) is :$'
ends
assume cs:code, ds:data
code segment
start:
mov ax, data
mov ds, ax
lea si, A
call readdecimal
lea si, B
call readdecimal
lea si, C
call readdecimal
xor bx, bx
mov al, A
cmp al, B
ja m1 ;A>B
cmp al, C ;A
ja m4 ;B>A>C
mov al, B ;B>A, C>A, B>C?
cmp al, C
ja m5 ;B>C>A
mov bl, B
jmp printit
m1: ;A>B, then judge B>C?
mov al, B
cmp al, C
** m2 ; B
mov bl, B ; found it, then print it
jmp printit
m2: ;A>B, C>B, then judge A>C?
mov al, A
cmp al, C
ja m3 ;A>C, found C
mov bl, A ;A
jmp printit
m3:
mov bl, C
jmp printit
m4:
mov bl, A
jmp printit
m5:
mov bl, B
printit:
mov ah,9
lea dx, msg1
int 21h
call printbin
mov ax, 4c00h
int 21h
;read decimal
;store to (si)
readdecimal proc near
lea dx, msg0
mov ah, 9
int 21h
lea dx, buf
mov ah,10
int 21h
mov byte ptr [si], 0
mov dl, 10
xor cx, cx
mov cl, buf+1
xor bx, bx
r0:
mov al, inn[bx]
and al, 0fh
xchg al, [si]
mul dl
add [si], al
inc bx
loop r0
ret
readdecimal endp
;print(bx)
printbin proc near
mov cx, 16
mov ah,0eh
p0:
rol bx, 1
mov al, bl
and al, 01h
xor al,30h
int 10h
loop p0
ret
printbin endp
ends
end start