第二种方法,将MOLT连加20次
ORG 100h
MOV CX,20 MOV BX,MOLT XOR AX,AX CLC
ADD1:ADC AX,BX
LOOP
ADD1
MOV ANS,AX HLT
MOLT DW 5 ANS DW ?
第三种方法,将“20”连加MOLT次
ORG 100h
MOV CX,MOLT MOV BX,20 XOR AX,AX CLC
ADD1:ADC AX,BX
LOOP ADD1
MOV ANS,AX HLT
MOLT DW 5 ANS DW ?
在DATA之下存放100个无符号的8位数,找出其最大者并将其存放在KVFF单元。
ORG 100h
3.8
XOR DL,DL LEA
DI,KVFF;
NEXT0: LEA
SI,BUFFER;
比较次数为N-1次
MOV CL,99;
NEXT1: MOV AL,[SI];
INC
SI;
CMP DL,AL; JNC NEXT2; MOV DL,AL;
DL中始终存目前最大值
NEXT2: DEC CL;
JNZ NEXT1;
MOV [DI],DL; 最大值存储
HLT
BUFFER DB ;自行定义100个数据 KVFF DB
?
3.9 若将数据按大小顺序排序,试编写程序.. 解:此处采用
NEXT0:
NEXT3:
NEXT5:
: ORG 100h LEA DI,BUFFER; 数据区
MOV BL,99;
外循环次数
MOV SI,DI;
MOV CL,BL;
内循环次数
MOV AL,[SI]; 读数 INC SI;
移动指针
CMP AL,[SI];
比较
JNC NEXT5; 大于转NEXT5 MOV DL,[SI]; MOV [SI-1],DL;
MOV [SI],AL;
不大于互换
DEC CL; 内循环次数减一
JNZ
NEXT3;
“冒泡法”予以处理
DEC JNZ HLT
BL; 外循环次数减一 NEXT0
BUFFER DB 自行定义100个字节型数据
3.10 在BVFF单元中有一个BCD数A,试根据下列关系编写程序,计算结果存在DES中.
A<20,Y=3*A; A<60,Y=A-20; A>=60,Y=80.
ORG 100h MOV AL,BVFF CMP AL,20 JL EX1 CMP AL,60 JL EX2 MOV AL,80 JMP STOP MOV BL,3 MUL BL
EX1:
JMP STOP SUB AL,20
EX2:
STOP: MOV DES,AL
HLT
BVFF DB 8
DES DB ?
3.11址为DATAB开始的80个单元中,存放某班80个学生的某课程成绩,要求:
统计>=90分、80~89分、70~79分、60~69分、60分以下的人数,结果存放在BTRX开始的5个单元中
求平均成绩,结果存放在LEVEL中。
解:寄存器使用分配:90分以上在DH,80分以上在DL,70分以上在BH,60分以上在BL,60分以下在AH,总分、均分都在[DI]。
ORG 100h XOR AH,AH XOR DX,DX XOR BX,BX LEA SI,DATA LEA DI,LEVEL
MOV CL,CONT; 总人数送循环计数器 CX
;统计结果清零 ;统计结果清零
goon: MOV AL,[SI] ;读原始数据
ADC [DI], AL; 累加总分
ADC [DI+1],0 ;计算进位