微机原理实验三(子程序设计)

记录第三次微机实验(子程序设计)

题目:编写程序,设有10个无符号数的字节序列,利用子程序的方法编程,求出该序列中的最大值和最小值。最大值放在BH,最小值放在BL(显示一位16进制)

代码如下:

DATA    SEGMENT
NUM     DB 14, 1, 3, 2, 9, 8, 14, 13, 10, 5;定义数据  
LEN     DB $ - NUM                         ;计算数据长度   
STR1	DB 'MAX:$'                         ;定义提示语句
STR2	DB 0DH, 0AH, 'MIN:$'               ;中间换行
DATA	ENDS
CODE	SEGMENT
        ASSUME CS:CODE, DS:DATA
START:  MOV AX, DATA
	    MOV DS, AX         
	    XOR CX, CX            
	    MOV CL, LEN - 1           	       ;定义循环次数
    	MOV SI, OFFSET NUM  
	    MOV BH, [SI]          
    	MOV BL, [SI]          
    	INC SI                             ;指针加一指向下一位
                                                
    	CALL MAXMIN                        ;调用最大最小值函数
    	MOV DX, OFFSET STR1                ;DOS 9号调用
    	MOV AH, 09H                        ;显示字符串
    	INT 21H
    
    	MOV DL, BH                         ;将最大值赋给DL    
    	CALL OUTPUT                        ;调用输出函数
                                           ;输出最大值
    	MOV DX, OFFSET STR2                ;DOS 9号调用
    	MOV AH, 09H                        ;显示字符串
    	INT 21H
    
    	MOV DL, BL                         ;将最小值赋给DL
    	CALL OUTPUT                        ;调用输出函数 
    	                                   ;输出最小值           
    	MOV AH, 4CH                        ;DOS 4C号调用
    	INT 21H                            ;返回操作系统
;最大最小值函数 
MAXMIN	PROC
ONE:    MOV AL, [SI]  
      	CMP AL, BL                         
      	JB  MIN_BL                         ;如果AL<BL跳转
TWO:  	CMP AL, BH       
      	JA  MAX_BH                         ;如果AL>BH跳转
NEXT:	INC SI   
		LOOP ONE                           ;判断循环是否结束
		RET 
MIN_BL:	MOV BL, AL                         ;更新最小值
		JMP NEXT                           
MAX_BH:	MOV BH, AL                         ;更新最大值
		JMP NEXT        
MAXMIN	ENDP                   
;输出函数         
OUTPUT	PROC     
		CMP DL, 9                          ;判断DL的值是否小于9
		JB  MIN_9  
		ADD DL, 07H                        ;DL>9,加37H变为字母
MIN_9:	ADD DL, 30H                        ;DL<=9,加30H变为数字
        MOV AH, 02H                        ;DOS 2号调用
        INT 21H                            ;显示单字符
   		RET       
OUTPUT	ENDP         
CODE ENDS
	END START 

PS:CSDN没有给汇编语言(assembly)提供语法高亮,所以为了方便阅读,下面给出代码贴图和运行结果。

代码贴图

在这里插入图片描述

运行结果

最大值为14,输出E
最小值为1,输出1

在这里插入图片描述

  • 8
    点赞
  • 38
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bestkain233

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值