6、某软件共可接收10个键盘命令(分别为A、B、C、┅、J),完成这10个命令的程序分别为过程P0、P1、┅、P9。编程序从键盘接收命令,并转到相应的过程去执 行。要求用两种方法: (1)用比较、转移指令实现。 (2)用跳转表实现
MOV DS,AX LEA BX,BUF MOV CX,100 MOV AH,0 MOV DH,0 MOV DL,0
;成绩表首址 ;学生人数
;低于60分人数 ;60-89分学生人数 ;90-100分学生人数
AAA1: MOV AL,[BX]
CMP AL, 60 JGE BBB1 INC AH JMP CCC1
;与90比较 ;大于等于转BBB2
;与60比较 ;大于等于转BBB1
7、内存自BUF单元开始的缓冲区连续存放着100个学生的英文分数,编程序统计其 中90-100、60-89、60以下者各有多少人,并把结果连续存放到自RESUT开始的单元 (要求画出程序流程图,各段定义完整)。 程序清单:
DATA SEGMENT
;数据段
BBB1: CMP AL,90
;堆栈段
JGE BBB2 INC DL JMP CCC1 INC AH
BUF DB ?,?,… ,? ;定义学生成绩表 RESUT DB ?,?,? ;放置分数段统计值
DATA ENDS STACK SEGMENT
DB 50 DUP(0)
CCC1: INC BX
LOOP AAA1
;修改成绩表位置
STACK ENDS CODE SEGMENT
;堆栈段
;保护DOS
MOV RESUT,AH MOV RESUT+1,DL MOV RESUT+2,DH RET
MAIN ENDP
;存放统计结果
ASSUME CS:CODE,DS:DATA,SS:STACK
MAIN RPOC FAR
PUSH DS XOR AX,0 PUSH AX,0 MOV AX,DATA
CODE ENDS
END
8、编程序一边从键盘上接收字符,一边将其写入指定的文件,字符个数共60。
9
程序清单: DATA SEGMENT
ENGLISH DB ?PRESS RETURN KEY TO EXIT?,ODH,OAH,?$?
BUF DB 60
;第一个字节设的最大长度(含0DH-回车符) DB 0
;第二个字节空出,由DOS最后填实际长度(不含0DH)
DB 61 DUP (0) ;第三字节开始写字符 DB ?$? DATA ENDS
STACK SEGMENT
DW 20 DUP (0)
STACK ENDS CODE SEGMENT
ASSUME CS:CODE,SS:STACK,DS:DATA
BEGIN: MOV AX,DATA MOV DS,AX LEA DX,ENGLISH MOV AH,09H INT 21H LEA DX,BUF MOV AH,0AH INT 21H MOV A