信息检索:已知有10组等长字符串,编程实现当用户输入0—9之间的任一数字时,输出对应的字符串。
.386
.model small
option casemap:none
data segment
msg db 'Please input your choice(1-3):$'
table dw func1,func2,func3,default,exit
data ends
code segment use16
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,'1'
shl al,1
xor bx,bx
mov bl,al
cmp bl,4 ;;关闭这两句会出现一些不直观的问题.
ja default
jmp table[bx]
func1:
;;执行等于1时的功能
mov dl,'O'
mov ah,2
int 21h
;退出分支语句
jmp exit
func2:
;;执行等于2时的功能
mov dl,'B'
mov ah,2
int 21h
;退出分支语句
jmp exit
func3:
;;执行等于3时的功能
mov dl,'T'
mov ah,2
int 21h
;退出分支语句
jmp exit
default:
;;执行默认功能
mov dl,'N'
mov ah,2
int 21h
exit:
;;退出语句
;DOS的结束语句
mov ax,4c00h
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
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中断号调用改了之后,还要怎么做呢?