当前位置:首页 > 微机原理作业及参考答案
MOV CX,100
LP: MOV AH,BUF[SI]
CMP AH,85H JA GS
CMP AH,60H JAE PS MOV AL,BAD ADD AL,1 DAA
MOV BAD,AL JMP AGAIN GS: MOV AL,GOOD ADD AL,1 DAA
MOV GOOD,AL JMP AGAIN PS: MOV AL,PASS ADD AL,1 DAA
MOV PASS,AL AGAIN: MOV AL,BL ADD AL,AH DAA
MOV BL,AL
MOV AL,BH ADC AL,0 DAA
MOV BH,AL
INC SI LOOP LP
MOV AVRG,BH MOV AH,4CH INT 21H CODE ENDS
END START 4-15
DATA SEGMENT
FIRST DB '...$' ;定义字符串 COUNT EQU 100 ;定义字符串长度 RESULT DW ? ;定义存放结果单元 DATA ENDS
STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV BX,OFFSET FIRST ;建立数据指针 MOV CX,COUNT ;设置循环次数 MOV DX,0 ;清零计数器 LP: CMP BYTE PTR [BX],'A' JNZ NEXT ;非'A'则转到NEXT INC DX ;是'A'则计数器DX加1 NEXT: INC BX ;调整数据指针 LOOP LP ;循环100次 MOV RESULT,DX ;结果存入RESULT MOV AH,4CH INT 21H CODE ENDS
END START 4-17
DATA SEGMENT
DATA_W DW X1,X2,… COUNT EQU ($-DATA_W)/2 COUT1 DW 0 COUT2 DW 0 COUT3 DW 0 DATA ENDS
STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV BX,OFFSET DATA_W ;建立数据指针 MOV CX,COUNT ;设置循环次数 LP: CMP WORD PTR [BX],0 JGE NEXT INC COUT2
JMP AGAIN NEXT: JG NEXT2 INC COUT3
JMP AGAIN
NEXT2: INC COUT1
AGAIN:INC BX ;调整数据指针 INC BX
LOOP LP ;循环100次
MOV AH,4CH INT 21H CODE ENDS
END START 4-18
DATA ESGMENT
ARRAY DB D1,D2,...,DN ;定义字节数组 COUNT EQU $-ARRAY ;字节数组长度赋予符号名COUNT MAX DB ? MIN DB ? DATA ENDS
STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV BX,OFFSET ARRAY ;建立数据指针 MOV CX,COUNT-1 ;设置循环次数 MOV AL,[BX] MOV MAX,AL ;MAX赋予初值为ARRAY的第一个数据 MOV MIN,AL ;MIN赋予初值为ARRAY的第一个数据 LP: INC BX ;调整数据指针 MOV AL,[BX] ;取数据 CMP AL,MIN ;与MIN进行比较 JNB BIG ;比MIN大则跳转BIG判断是否最大值 MOV MIN,AL ;小于或等于MIN则给MIN重新赋值 JMP NEXT ;比较下一个数据 BIG: CMP AL,MAX ;与MAX进行比较 JNA NEXT ;比MAX小则比较下一个数据 MOV MAX,AL ;大于或等于MAX则给MAX重新赋值 NEXT: LOOP LP MOV AH,4CH INT 21H CODE ENDS
END START 4-19
DATA SEGMENT
BLOCK DB X1,X2,… COUNT EQU 256 MAX DB ? DATA ENDS
STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?) STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV MAX,0
MOV BX,OFFSET BLOCK ;建立数据指针 MOV CX,COUNT ;设置循环次数 LP: MOV AL, BYTE PTR [BX]
CMP AL,0 JGE NEXT NEG AL NEXT: CMP MAX,AL
JAE AGAIN MOV MAX,AL
AGAIN:INC BX ;调整数据指针 LOOP LP MOV AH,4CH INT 21H CODE ENDS
END START
4-22
DATA SEGMENT STRING DB 'S1S2...S80' COUNT EQU 80 DATA ENDS
STACK SEGMENT PARA STACK 'STACK' DB 100 DUP(?) STACK ENDS
CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,0 ;清零计数器DX MOV BX,OFFSET STRING;建立指针 MOV CX,COUNT ;置循环次数
共分享92篇相关文档