微机原理黄冰版--作业答案(4)

2019-08-02 00:23

3.23 在数据区STR1单元开始存放一长度为1~256个字符的字符串。要求对该字符串中每个字符在最高位配上一个偶校验位(即保持一字节数中1的个数为偶数),并存回到原单元中。

DATA SEGMENT

STR1 DB 'abcdefghi' LEN1 EQU $-STR1 DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,LEN1 MOV SI,0

ALOOP: MOV AL,STR1[SI]

OR AL,0 ;与0相或,不影响原来的值

JP CONTINUE ;若1的个数为偶数,不做任何处理 OR AL,80H ; 若1的个数为偶数,最高位置1 MOV STR1[SI],AL CONTINUE:INC SI

LOOP ALOOP STOP: MOV AH, 4CH INT 21H CODE ENDS END START

3.24 已知在数据区中DATA1和DATA2开始分别存放N个字节数据,编制程序检查两数据块中的数据是否相同。若完全一致,则将标志单元FLAG置FFH,否则置0。并将第一次出现的不同数据的地址分别存放ADR1和ADR2单元中,编写程序。

;假设为按顺序比较,非无序比较 DATA SEGMENT DATA1 DB 22H,33H,44H,55H DATA2 DB 22H,33H,44H,66H N EQU $-DATA2 FLAG DB ? ADR1 DW ? ADR2 DW ? DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,N MOV SI,0 MOV DI,0 ALOOP1: MOV AL,DATA1[SI] CMP AL,DATA2[DI] JNZ NE12 INC SI INC DI

LOOP ALOOP1 MOV FLAG,0FFH

JMP EXIT NE12: MOV FLAG,0 MOV ADR1,SI MOV ADR2,DI EXIT: MOV AH, 4CH INT 21H

16

CODE ENDS END START

3.25 定义一数组GRADE存放有100个学生某门功课的考试成绩,要求编一程序,统计各分数段的人数,即要求统计90~100分,80~89分,70~79分,60~69分以及60分以下的各有多少人。

DATA SEGMENT

GRADE DB 12,65,77,88,98,23,94,75,85,62 LEN EQU $-GRADE A DB 0 B DB 0 C DB 0 D DB 0 E DB 0 DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,LEN ALOOP1: MOV SI,CX DEC SI

CMP GRADE[SI],60

JB GRE ;<60, E+1->E CMP GRADE[SI],70

JB GRD ;<70, D+1->D CMP GRADE[SI],80

JB GRC ;<80, C+1->C CMP GRADE[SI],90

JB GRB ;<90, B+1->B INC A ;>=90, A+1->A JMP GOON GRB: INC B

JMP GOON GRC: INC C

JMP GOON GRD: INC D

JMP GOON GRE: INC E

JMP GOON GOON: LOOP ALOOP1 MOV AH, 4CH INT 21H CODE ENDS END START

3.26 编一程序,在以BUF为首址的字节单元中存放了COUNT个无符号数,找出其中最大数送MAX单元。

DATA SEGMENT

BUF DB 11,23,43,45,67,82,38,48,98,34,67 COUNT EQU $-BUF MAX DB ? DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,COUNT MOV AL,0 ;AL用力存放最大数,初值为0

17

ALOOP: MOV SI,CX DEC SI

CMP AL,BUF[SI] ;从后面取数据,与AL比较 JAE GOON

MOV AL,BUF[SI]

GOON: LOOP ALOOP MOV MAX,AL MOV AH, 4CH INT 21H CODE ENDS END START

3.27 利用系统功能调用从键盘输入10个一位无符号数,求出其中最大和最小数,在显示器上输出显示。

DATA SEGMENT

IN_STR DB 'Please Input 10 Num of 0~9:$' MAX_STR DB 0DH,0AH,'MAX Num is:$' MIN_STR DB 0DH,0AH,'MIN Num is:$' MAX DB ? MIN DB ? DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,IN_STR MOV AH,09H

INT 21H ;提示输入10个数字 IND: MOV AH,01H

INT 21H ;输入一个字符 CMP AL,30H

JB IND ;<30H,ERROR CMP AL,39H

JA IND ;>39H,ERROR SUB AL,30H

MOV MIN,AL ;第一个数初始化MIN MOV MAX,AL ;第一个数初始化MAX MOV CX,3 ALOOP: MOV AH,01H

INT 21H ;输入一个字符 CMP AL,30H

JB ALOOP ;<30H,ERROR CMP AL,39H

JA ALOOP ;>39H,ERROR SUB AL,30H ;ASCII->数 CMP AL,MIN

JB GOMIN ;小于最小数,AL->MIN,输入下一个数 CMP AL,MAX

JA GOMAX ;大于最大数,AL->MAX,输入下一个数 JMP GOON GOMIN: MOV MIN,AL JMP GOON

GOMAX: MOV MAX,AL

GOON: LOOP ALOOP LEA DX,MAX_STR MOV AH,09H

INT 21H ;提示输出最大数 MOV DL,MAX ADD DL,30H MOV AH,02H

18

INT 21H ;输出最大数 LEA DX,MIN_STR MOV AH,09H

INT 21H ;提示输出最小数 MOV DL,MIN ADD DL,30H MOV AH,02H

INT 21H ;输出最小数 MOV AH, 4CH INT 21H CODE ENDS END START

3.28 利用系统功能调用,完成将键盘输入的小写字母转换成大写字母输出显示,直到输入$字符时,停止输出。

CODE SEGMENT ASSUME CS:CODE START: MOV AH,01H

INT 21H ;输入一个字符 CMP AL,'$'

JE STOP ;'$'符,退出 CMP AL,'a' JB START CMP AL,'z' JA START ;非小写字母,继续输入 SUB AL,20H MOV DL,AL MOV AH,02H INT 21H ;小写字母转换成大写字母输出 JMP START STOP: MOV AH, 4CH INT 21H CODE ENDS END START

3.29 设有一字符串已存放在STRBUF为首址的数据区中,编一程序找出其中的$字符,并将其存放地址送ADRBUF单元中。

DATA SEGMENT

STRBUF DB 'a;sldkfjasldkf$asdf' LEN EQU $-STRBUF ADRBUF DB ? DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX

MOV CX,LEN ;最多查询次数 MOV BX,0

ALOOP: CMP STRBUF[BX],'$'

JZ STOP ;找到,地址送ADRBUF,退出程序 INC BX

LOOP ALOOP STOP: MOV ADRBUF,BL MOV AH, 4CH INT 21H CODE ENDS END START

19

3.30 用子程序结构编程计算:S=1!+2!+3!+4!+?+8! 修改原有答案结果,SUM2为结果

STACK SEGMENT STACK DW 256 DUP(?) TOP LABEL WORD STACK ENDS DATA SEGMENT BUFF DB 1,2,3,4,5,6,7,8 SUM DW 0000H SUM2 DW 0 DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX

MOV SP,OFFSET TOP MOV CH,0 MOV CL,8

MOV SI,OFFSET BUFF LOP1:

MOV AX,OFFSET SUM PUSH AX MOV AH,0 MOV AL, [SI] PUSH AX

CALL FAR PTR FACT MOV DX,SUM ADD SUM2,DX INC SI

LOOP LOP1 MOV AH,4CH INT 21H CODE ENDS

CODES SEGMENT ASSUME CS:CODES FACT PROC FAR PUSH BP MOV BP,SP PUSH BX PUSH AX

MOV BX,[BP+8] MOV AX,[BP+6] CMP AX,0 JE DONE PUSH BX DEC AX PUSH AX CALL FACT MOV BX,[BP+8] MOV AX,[BX]

MUL WORD PTR [BP+6] JMP RETURN

DONE: MOV AX,01H RETURN:MOV [BX],AX POP AX POP BX POP BP

20


微机原理黄冰版--作业答案(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:九连环活动教学设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: