信息检索:已知有10组等长字符串,编程实现当用户输入0—9之间的任一数字时,输出对应的字符串。
data segment
msg db 'Please input your choice(1-9):$'
table dw func1,func2,func3,func4,func5,func6,func7,func8,func9,default,exit
data ends
code segment
assume cs:code ,ds:data
start: ;初始化数据段寄存器
mov ax,data
mov ds,ax ;输出提示信息
;调用DOS中断的9号功能
mov dx,offset msg
mov ah,9h
int 21H
call newLine
;;读入数据,这里假定用户会根据提示输入正确数据,
;;因此不做纠错工作
mov ah,1
int 21h
;;将读入的ASCII码处理成序数
sub al,'1000'
shl al,1
xor bx,bx
mov bl,al
cmp bl,4 ;;关闭这两句会出现一些不直观的问题.
ja default
jmp table[bx]
func1:
;;执行等于1时的功能
mov dl,'O100'
mov ah,9
int 21h
;退出分支语句
jmp exit
func2:
;;执行等于2时的功能
mov dl,'11100'
mov ah,9
int 21h
;退出分支语句
jmp exit
func3:
;;执行等于3时的功能
mov dl,'5200'
mov ah,9
int 21h
;退出分支语句
jmp exit
func4:
;;执行等于3时的功能
mov dl,'2256'
mov ah,9
int 21h
;退出分支语句
jmp exit
func5:
;;执行等于3时的功能
mov dl,'6930'
mov ah,9
int 21h
;退出分支语句
jmp exit
func6:
;;执行等于3时的功能
mov dl,'8250'
mov ah,9
int 21h
;退出分支语句
jmp exit
func7:
;;执行等于3时的功能
mov dl,'8652'
mov ah,9
int 21h
;退出分支语句
jmp exit
func8:
;;执行等于3时的功能
mov dl,'6930'
mov ah,9
int 21h
;退出分支语句
jmp exit
func9:
;;执行等于3时的功能
mov dl,'9300'
mov ah,9
int 21h
;退出分支语句
jmp exit
default:
;;执行默认功能
mov dl,'N'
mov ah,2
int 21h
exit: ;;退出语句
;DOS的结束语句
mov ah,4ch
int 21h
newLine proc
mov al,0AH
mov ah,0Eh
int 10H
mov al,0DH
mov ah,0Eh
int 10H
ret ;这段可不可以解释一下?
newLine endp
code ends
end start
把dos中断号调用改了之后,还要怎么做呢?