首先键盘输入字符串数,然后逐个输入字符串,最后按字母首序输出字符串。
- include io.inc
- .model small
- .stack
- .data
- CHARS DB 50 DUP(20H),'$' ;实际键入的字符从此开始存放.
- set db 20 dup(20H)
- .code
- .startup
- mov ah,01 ;从标准输入设备输入字符
- int 21h
- and al,0fh
- ;dec al
- mov ah,0
- mov cx,ax
-
- push cx
- push cx
-
- ;inc cx
- ;call disprw
- xor bx,bx
- mov bx,offset CHARS
- xor bp,bp
- mov bp,offset set
-
- again:
- push cx
- mov ax,bx
- call readmsg
- inc ax
- ;and al,0fh
- mov byte ptr [bp],al
- inc bp
- dec ax
- add bx,ax
- inc bx
- pop cx
- ;call disprw
- loop again
-
- inc bp
- mov byte ptr [bp],'$'
- ;mov al,set
- ;call disphb
- ;mov ah,9 ;执行显示操作
- ;int 21h
-
- ;inc bx
- ;MOV BYTE PTR [BX], '$'
- ;lea dx,CHARS
- ;mov ah,9 ;执行显示操作
- ;int 21h
- pop si
-
- xor bx,bx
- xor ax,ax
- mov cx,26
- xor ah,ah
- mov ah,61h
- loop2:
- push cx
-
- ;pop cx
- mov cx,si
-
- mov bx,offset CHARS
- mov bp,offset set
- loop1:
- mov al,[bx]
- cmp al,ah
- ;push ax
- ;push bx
- ;call disprw
- ;call disprf
- ;pop bx
- ;pop ax
-
- jnz done
-
- push ax
- push bx
- mov ax,bx
- call dispmsg
- PUSH AX
- PUSH DX
- MOV AH, 02H ;输出单个字符.
- MOV DL, 0DH ;0D是回车符的zhiASCII码.
- INT 21H ;输出.
- MOV AH, 02H
- MOV DL, 0AH ;0A是换行符的ASCII码.
- INT 21H
- POP DX
- POP AX
- ;call disprw
- pop bx
- pop ax
- done:
- add bl,[bp]
- inc bp
- ;call disprw
- loop loop1
- inc ah
- pop cx
- loop loop2
- MOV AH,4CH
- INT 21H
- .exit
- end
-
运行结果: