【无标题】

DATA SEGMENT
    ARRAY DB 23,1,2,3,0,8,14,13,10,5 ;定义数组  
    LEN  DB $-ARRAY                  ;定义字符串长度
    CRLF DB 0AH,0DH,'$'              ;定义换行
    STR1 DW 'THE MAX NUMBER IS:$'    ;定义输入输出提示语句
    STR2 DW 'THE MIN NUMBER IS:$'
DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE ,DS:DATA
START:
    MOV AX,DATA
    MOV DS,AX
                       
    XOR CX,CX            ;cx初始化
    MOV CL,LEN           ;把len长度赋值给cl,按照题目要求,也可以用MOV CL,10也可以
    SUB CL,1
    
    MOV SI,OFFSET ARRAY  ;使指针si指向array
    MOV BH,[SI]          ;把si指向的内容赋值给bh
    MOV BL,[SI]          ;把si指向的内容赋值给bl
    INC SI               ;si指针自增1
      
    CALL FIND            ;执行find子程序,其程序功能是找出最大与最小值
    
    MOV DX,OFFSET STR1   ;输出提示语句
    MOV AH,9H
    INT 21H
    
    MOV DL,BH            ;把bh内容赋值给dl
    CALL PRINT           ;执行print子函数    
   
    MOV DX,OFFSET CRLF   ;换行
    MOV AH,9
    INT 21H
    
    MOV DX,OFFSET STR2   ;输出提示语句
    MOV AH,9
    INT 21H
    
    MOV DL,BL            ;把bl内容赋值给dl      
    SHR DL,4
    CALL PRINT           ;执行print子程序    
    
    MOV DL,BL
    AND DL,0FH
    CALL    PRINT
                 
    MOV AH,4CH           ;结束程序
    INT 21H 
 
FIND PROC
X:  MOV AL,[SI]     ;把si指向地址的内容赋值给AL
    
    CMP AL,BL       ;al和bl比较
    JB  CHANGE_BL   ;如果al比较小则跳change_bl函数
    
F:  CMP AL,BH       ;al和bh比较
    JA CHANGE_BH    ;如果al比较大则跳转change_bh函数
 
NEXT:
    INC SI    ;si指针自增1
    LOOP X    ;做循环 当cl=0时,退出循环执行下一条语句
    JMP OVER  ;跳到over函数
 
CHANGE_BL:    ;把al的值赋给bl
    MOV BL,AL
    JMP F     ;跳f函数
 
CHANGE_BH:    ;把al的值赋给bh
    MOV BH,AL
    JMP NEXT  ;跳next函数
 
OVER:         ;结束子函数
    RET
FIND ENDP                   
        
 
PRINT PROC   
    CMP DL,9  ;dl与9比较
    JB NEXT1  ;跳next1函数
    ADD DL,7  ;因为dl>9因此要转换成A-F的格式
    
NEXT1:
    ADD DL,30H;dl+30H转ascll码输出
    MOV AH,02H;输出dl
    INT 21H    
    RET       ;结束子程序
PRINT ENDP        
 
CODE ENDS
END START

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值