更新时间2018-06-23 18:32:34
data segment
one db 'please one:$'
two db 'please two:$'
three db 'please three:$'
four db 'mid:$'
x1 db 3,0,3 dup(20h)
x2 db 3,0,3 dup(20h)
x3 db 3,0,3 dup(20h)
sw dw 4 dup(?)
data ends
code segment
BEGIN PROC FAR
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ah,09h
mov dx,offset one
int 21h
mov ah,0ah
mov dx,offset x1
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov ah,0ah
int 21h
mov ah,09h
mov dx,offset two
int 21h
mov ah,0ah
mov dx,offset x2
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov ah,0ah
int 21h
mov ah,09h
mov dx,offset three
int 21h
mov ah,0ah
mov dx,offset x3
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov ah,0ah
int 21h
mov ax,word PTR x1
AND ax,0f0fh
mov cl,4
shl al,cl
or al,ah
mov byte ptr sw,al
mov ax,word ptr x2
and ax,0f0fh
shl al,cl
or al,ah
mov byte ptr sw+1,al
mov ax,word ptr x3
and ax,0f0fh
shl al,cl
or al,ah
mov byte ptr sw+2,al
mov al,sw
mov bl,sw+1
mov cl,sw+2
cmp al,bl
jnc s0
xchg al,bl
s0:cmp al,cl
jnc s2
jmp sc
s2:cmp bl,cl
jnc s3
mov al,cl
jmp sc
s3:mov al,bl
jmp sc
sc:mov ah,09h
mov dx,offset four
int 21h
mov ah,al
and ah,0fh
add ah,30h
mov dl,ah
mov ah,02h
int 21h
mov ah,al
mov cl,4
ror ah,cl
and ah,0fh
add ah,30h
mov dl,ah
mov ah,2
int 21h
ret
begin endp
code ends
end start
以上是我的程序 感谢大神
改好的,你参考下
data segment
one db 'please one:$'
two db 'please two:$'
three db 'please three:$'
four db 'mid:$'
x1 db 3,0,3 dup(20h)
x2 db 3,0,3 dup(20h)
x3 db 3,0,3 dup(20h)
sw db 4 dup(0) ;你的这个只要字节就可以,不要字的
data ends
code segment
BEGIN PROC FAR
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ah,09h
mov dx,offset one
int 21h
mov ah,0ah
mov dx,offset x1
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah ;ah=0a是输入了,应该是dl=0a
int 21h
mov ah,09h
mov dx,offset two
int 21h
mov ah,0ah
mov dx,offset x2
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah ;同上的错
int 21h
mov ah,09h
mov dx,offset three
int 21h
mov ah,0ah
mov dx,offset x3
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,2
mov dl,0ah;同上
int 21h
mov ax,WORD PTR x1+2 ;x1+2才是数据,下同
AND ax,0f0fh
mov cl,4
shl al,cl
or al,ah
mov byte ptr sw,al
mov ax,word ptr x2+2
and ax,0f0fh
shl al,cl
or al,ah
mov byte ptr sw+1,al
mov ax,word ptr x3+2
and ax,0f0fh
shl al,cl
or al,ah
mov byte ptr sw+2,al
mov al,sw
mov bl,sw+1
mov cl,sw+2
cmp al,bl
jnc s0
xchg al,bl
s0:cmp al,cl
jnc s2
jmp sc
s2:cmp bl,cl
jnc s3
mov al,cl
jmp sc
s3:mov al,bl
jmp sc
sc:
mov bx,ax ;ax会因int 21H改变,所以要保存
mov ah,09h
mov dx,offset four
int 21h
mov ah,bl;先显示高位
mov cl,4
ror ah,cl
and ah,0fh
add ah,30h
mov dl,ah
mov ah,2
int 21h
mov ah,bl ;显示低位
and ah,0fh
add ah,30h
mov dl,ah
mov ah,02h
int 21h
mov ah,4ch
int 21h
ret
begin endp
code ends
end start
上一篇:抽出功能不能用了。