微机实验三—— 循环程序设计

微机实验三—— 循环程序设计

一、实验题目

编写一段程序,在数据段的十个数据单元中,定义20个8位无符号数(或键盘输入)。找出最大数和最小数,分别送到MAX和MIN单元中。显示原始数据、最大值、最小值。

二、代码

DATA SEGMENT 
 BUF DB 20,35H,38H,34H,36H,30H,41H,47H,55H,33H,39H,57H,59H,49H,62H,78H,61H,37H,65H,66H,68H,'$' 
 P1 DB 0DH,0AH,'THE ORIGINAL NUMBER ARE:','$' 
 //定义一个P1为字类型,0ah和0dh组合起来是换行的意思,$经常时字符串的结束标记做回车换行,使字串符能另起一行显示
 P2 DB 0DH,0AH,'THE MAX IS:','$' 
 P3 DB 0DH,0AH,'THE MIN IS:','$' 
 MAX DB 20 DUP(?) //20 DUP(?)意思表示20个字节单元,内容未知
 MIN DB 20 DUP(?) 
 DATA ENDS 
 
STACK SEGMENT STACK 'STACK' 
 SA DB 100 DUP(?) 
 TOP LABEL BYTE //LABEL用作定义变量TOP属性,其类型可以为BYTE、WORD等
 STACK ENDS
 
CODE SEGMENT 
 ASSUME CS:CODE,DS:DATA,SS:STACK 
 MAIN PROC FAR //可以换一种写法main:,方便link
 START: MOV AX,STACK 
 MOV SS,AX 
 MOV SP,OFFSET TOP //意思是将top的首地址传送给寄存器sp
 PUSH DS 
 MOV AX,0 
 PUSH AX 
 MOV AX,DATA 
 MOV DS,AX 
 MOV DX,OFFSET P1 
 MOV AH,9 
 INT 21H //调用DOS功能,该功能为显示DS:DX地址处的字符
 MOV DX,OFFSET BUF[1] 
 MOV AH,9 
 INT 21H 
 
 MOV DI,OFFSET BUF 
 MOV CL,BUF[DI] 
 DEC CL //CL自减少
 
 L1:MOV DL,CL 
 MOV BH,0 
 
 L2: ADD DI,1 
 MOV AL,BUF[DI] 
 CMP AL,BUF[DI+1] 
 JBE CONTI// 即当低于或等于时转移到CONTI ,大于进行前后数据交换,小的到前面来,冒泡排序
 XCHG AL,BUF[DI+1] 
 MOV BUF[DI],AL 
 MOV BH,1 
 
CONTI: LOOP L2 
 CMP BH,30H 
 JE STOP 
 MOV CL,DL 
 MOV DI,OFFSET BUF 
 LOOP L1 
 MOV DH,BUF[DI+20] 
 MOV MAX,DH 
 MOV CH,BUF[DI+1] 
 MOV MIN,CH 
 MOV DX,OFFSET P2 
 MOV AH,9 
 INT 21H 
 
 MOV DL,MAX 
 mov bl,dl 
 shr bl,4 ;右移4,左边填0------先输出高四位 
 add bl,30h;加上30h 
 mov dl,bl; 
 mov ah,2 
 int 21h 
 mov bl,max 
 sal bl,4;左移4//SAL是算数左移指令,而SHL是逻辑左移指令
 shr bl,4;再右移4位得到低四位,高四位为0----下边相同
 add bl,30h 
 mov dl,bl 
 MOV AH,2 
 INT 21H 
 MOV DX,OFFSET P3 
 MOV AH,9 
 INT 21H 
 
 MOV DL,MIN 
 mov bl,dl 
 shr bl,4 
 add bl,30h 
 mov dl,bl 
 mov ah,2 
 int 21h 
 mov bl,MIN 
 sal bl,4 
 shr bl,4 
 add bl,30h 
 mov dl,bl 
 MOV AH,2 
 INT 21H 
 
 MOV AH,4CH 
 INT 21H 
 STOP: RET 
 MAIN ENDP 
CODE ENDS 
 
 END START

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值