标题:cmp al,'1'往哪里跳转???
取消只看楼主
fanjinxiang
Rank: 1
等 级:新手上路
帖 子:13
专家分:7
注 册:2012-10-15
结帖率:100%
已结贴  问题点数:20 回复次数:0 
cmp al,'1'往哪里跳转???
Data segment
mes db'***menu***',0dh,0ah,'$'
mes1 db'***1-score valuation***',0dh,0ah,'$'
mes2 db'***2-Exit***',0dh,0ah,'$'
mes3 db'input number(1~2)',0dh,0ah,'$'
mes4 db'input a score',0dh,0ah,'$'  
level1 db 0dh,0ah,'the level of score is:A','$'  ;90-100分:成绩等级为 A         
level2 db 0dh,0ah,'the level of score is:B','$'  ;80-90分:成绩等级为 B
level3 db 0dh,0ah,'the level of score is:C','$'  ;70-80分:成绩等级为 C
level4 db 0dh,0ah,'the level of score is:D','$'  ;60-70分:成绩等级为 D
level5 db 0dh,0ah,'the level of score is:E','$'  ;0-60分:成绩等级为 E
string db 0dh,0ah,'$'
table dw disp1,disp2         ;取得各个标号的偏移地址
Data ends
Code segment
     assume cs:Code,ds:Data
start:mov ax,Data
      mov ds,ax
start1:mov dx,offset mes     ;显示简易数字菜单
       mov ah,9
       int 21h
       mov dx,offset mes1
       mov ah,9
       int 21h
       mov dx,offset mes2      
       mov ah,9
       int 21h
       mov dx,offset mes3    ;提示输入数字
       mov ah,9
       int 21h
       mov ah,1              ;等待按键
       int 21h
       cmp al,'1'            ;数字 < 1 ?
      
       mov ah, 1
       int 21h               
       cmp al,'o'           ;若输入为字母o,则返回主菜单
       je start1            
       cmp al, 0dh            
       je read3             ;输入为回车字符 则数据输入结束
       cmp al, 30h          ;不是0~9之间的字符,则输入结束
       jl read3
       cmp al, 39h
       ja read3
       sub al, 30h          ; 是0~9之间的的字符,则转换为二进制数
       mov ah, 0              
       xchg ax, bx          ;交换ax和bx里的值
       mov cx, 10
       mul cx               ;实现数字乘10
       add bx, ax           ; 已输入的数字乘10后,与新输入的数字值相加,结果放在bx中
       jmp read2
read3:
       jb start1
       cmp al,'2'            ;数字 >2 ?
       ja start1
       and ax,0000fh         ;将ASCII码 转换成数字
       dec ax
       shl ax,1              ;等效于add ax,ax
       mov bx,ax
       jmp table[bx]         ;(段内)间接转移:IP<-[table+bx]
start2:mov ah,4c
       int 21h
start3:mov dx,offset level5   
       mov ah,9
       int 21h              
       jmp disp1
start4:mov dx,offset level4
       mov ah,9
       int 21h            
       jmp disp1
start5:mov dx,offset level3
       mov ah,9
       int 21h              
       jmp disp1
start6:mov dx,offset level2
       mov ah,9
       int 21h            
       jmp disp1
start7:mov dx,offset level1  
       mov ah,9
       int 21h            
       jmp disp1
read proc                   ;从键盘输入一个十进制数子程序
       push cx
       push ax
read1:
        mov bx, 0           ;把bx清零
read2:
        pop ax
        pop cx
        ret
read endp
disp1: mov dx,offset string ;成绩评定分支程序
       mov ah,9
       int 21h
       mov dx,offset mes4   ;提示输入成绩   
       mov ah,9
       int 21h
       call read            ;调用从键盘输入十进制数子程序
       cmp bx,60           ;(bx)<60 ?
       jb start3
       cmp bx,70
       jb start4
       cmp bx,80
       jb start5
       cmp bx,90
       jb start6
       cmp bx,100          ;(bx)<=100 ?
       jbe start7
disp2:jmp start2             ;返回DOS
Code ends
     end start         
 

搜索更多相关主题的帖子: level2 valuation number 
2012-11-06 12:46



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-386075-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.378659 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved