计数控制法例子
- 微机原理与接口技术——LOOP循环
实现思路如下
- 先取第一个数送入寄存器al中,将al中的数依次与后面的count-1个数进行比较,若al中的数较小,则将较大的数送入al寄存器中;若al中的数比较大,则al保持不变;在比较的过程中,始终保持al中存放较大的数,比较count-1次后,al中的数即为最大数,再将其送到max中。
代码如下
DATA SEGMENT
BUF DB 3,23,90,135,30,70
COUNT EQU $-BUF
MAX DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
MOV BX, OFFSET BUF ;获取buf的偏移地址
MOV CX, COUNT-1 ;cx为比较的次数
MOV AL, [BX] ;取数组第一个元素
ALP: INC BX ;指针加加
CMP AL, [BX] ;取出后一个元素与al比较
JAE NEXT ;如果al大于等于所比较的元素,跳转到next
MOV AL, [BX] ;al小于所比较元素,将所比较的元素存到al
NEXT: LOOP ALP ;若cx不为0,循环继续跳到alp
;为零,则跳出循环往下执行
MOV MAX, AL ;将数组中最大值存入max
MOV AH, 02H ;只能显示ASCII中可显示的字符
MOV DL, AL
INT 21H
MOV AH, 4CH
INT 21H
CODE ENDS
END START