XOR BX,BX XOR DX,DX XOR BP,BP NEXT: LODSB
CMP AL,90 JNC NEXT1 CMP AL,60 JNC NEXT2 INC BP
JMP DONE NEXT1:INC BX
JMP DONE
NEXT2:INC DX DONE: LOOP NEXT
MOV [DI],BX ADD DI,2 MOV [DI],DX ADD DI,2 MOV [DI],BP
MOV AH,4CH INT 21H CODE ENDS
;BX存放90~100分的学生个数 ;DX存放60~89分的学生个数 ;BP存放00~59分的学生个数 ;取学生分数 ;是否大干等于90分
;大于等于90分,转到BX+1
;是否大于等于60分 ;大干等于60分,转到DX+1
;小于60分,BP+1
;90~100分的个数加1
;60~89分的个数加1
END START
15.设有一数据块,共有100个字节,试找出数据块中最大者,并把它送至MAX单元中。
解
CODE SEGMENT
ASSUME CS:CODE,DS:CODE 0RG 100H
START:JMP BEGIN BUF
DB 12H,56H,0ABH,…,0FDH,00H;共100个字节无符号数
COUNT EQU $-BUF MAX DB ?
BEGIN:MOV AX,CS
MOV DS,AX
MOV SI,OFFSET BUF MOV CX,COUNT MOV AL,[SI] LOP1: INC SI
CMP AL,[SI] JG LOP2 XCHG AL,[SI] 坏原始数据。 LOP2: LOOP LOP1
;用MOV AL,[SI]似乎要好一些,不会破
MOV MAX,AL MOV AH,4CH INT 21H CODE ENDS 或:
DATA BUF
SEGMENT
DB 12H,56H,0ABH,…,0FDH,00H;共100个字节无符号数 END START
COUNT EQU $-BUF MAX DB ? DATA
ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA 0RG 100H
START:MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET BUF MOV CX,COUNT MOV AL,[SI] LOP1: INC SI
CMP AL,[SI] JG LOP2
XCHG AL,[SI] 始数据。
LOP2: LOOP LOP1
MOV MAX,AL MOV AH,4CH INT 21H CODE ENDS
END START
;用MOV AL,[SI]似乎要好一些,不会破坏原
19.在偏移量为First和Two的内存单元中,分别有两个双字节带符号数X和Y。试编一程序,若X<Y,则清除中断标志,否则就把方向标志置位。 解
DATA SEGMENT FIRST DW X TW0 DW Y DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET FIRST MOV AX,[SI]