云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 中北大学微机原理80分考卷

中北大学微机原理80分考卷

  • 62 次阅读
  • 3 次下载
  • 2025/6/18 5:27:43

1.从BUFF单元起有一个字符串(长度小于65535),以'*'结束,编写一个完整程序求该字符串长度存入LENT单元,并统计字符串中含有大写英文字符的个数并存入COUNT单元。要求源程序具备必要的伪指令和段说明。 1. DATA SEGMENT INC CX BUFF DB 'ABCD…….*' CMP AL,'A' LENT DW ? JC NEXT COUNT DW ? CMP AL,'Z' DATA ENDS JNC NEXT CODE SEGMENT INC DX ASSUME CS:CODE,DS:DATA NEXT: INC BX START:MOV AX,DATA JMP LP MOV DS,AX DONE: INC CX LEA BX,BUFF MOV LENT,CX MOV CX,0 MOV COUNT,DX MOV DX,0 MOV AH,4CH LP: MOV AL,[BX] INT 21H CMP AL,'*' CODE ENDS JZ DONE END START

2.有一带符号8位数X存于DAT单元.编一个程序段判断该数,若x小于0则将0FFH送MARK单元;若X等于0则将MARK+1单元置0FFH;若X大于0则置MARK+2单元为0FFH。 2. MOV AL,DAT JMP DONE AND AL,AL LPl: MOV MARK,0FFH JS LP1 JMP DONE JZ LP2 LP2: MOV MARK+1,0FFH MOV MARK+2,0FFH DONE: HLT 3.已知有X、Y、Z三个字变量,存放无符号整数,请编一个完整的程序实现公式Z=(X+Y)/(X-Y+600)(不考虑溢出情况)。

3、DSEG SEGMENT SUB BX,Y X DW ? ADD BX,600 Y DW ? MOV AX,X Z DW ? ADD AX,Y DSEG ENDS MOV DX,0 CSEG SEGMENT DIV BX ASSUME CS:CSEG,DS:DSEG MOV Z,AX MAIN PROC FAR MOV AH,4CH BEGIN: MOV AX,DSEG INT 21H MOV DS,AX MAIN ENDP MOV BX,X CSEG ENDS

END BEGIN

4.AX寄存器中存放着4位十六进制数。试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCII码,并依次存放到RESULT数组的4个字节中去,要求用调用子程序的方法实现。 4、 CODE SEGMENT HASC PROC NEAR ASSUME CS:CODE,DS:CODE MOV DL,AL START: MOV BX,CODE AND DL,0FH

MOV DS,BX CMP DL,9 MOV CL,4 JA L2

MOV BL,4 ADD DL,30H MOV SI,OFFSET RESULT L1: RET

LP: CALL HASC L2: ADD DL,37H MOV [SI],DL JMP L1 INC SI HASC ENDP

SHR AX,CL RESULT DB 4 DUP(?) DEC BL CODE ENDS JNZ LP END START EXIT: MOV AH,4CH INT 21H

5.写出对存放在DX和AX中的双字长数求补的指令序列。

5、 方法1 方法2 方法3 MOV CX,0 NOT AX NEG DX SUB CX,AX NOT DX NEG AX MOV AX,CX ADD AX,1 SBB DX,0 MOV CX, 0 ADC DX,0 SBB CX, DX MOV DX, CX

6.设有两个等长字符串。试编写一个汇编语言程序,比较它们是否完全相同;若相同,则将字符\送入AL中,否则,将字符\送入AL中。 6. CODE SEGMENT REPE CMPSB ASSUME CS:CODE,DS:CODE JNZ NE START: MOV AX,CODE MOV AL,'Y' MOV DS,AX JMP EXIT MOV ES,AX NE: MOV AL,'N' CLD EXIT: MOV AH,4CH LEA SI,STRING1 INT 21H LEA DI,STRING2 STRING1 DB'…' MOV CX,DI STRING2 DB'…' SUB CX,SI CODE ENDS XOR AX,AX END START 7.写出程序段,把DX,AX中的双字右移四位。 7、 MOV CL,4 SHR DX,CL SHR AX,CL SHL BL,CL MOV BL,DL OR AH,BL

8.编写一个完整的8086汇编语言程序,从附加段中首地址为ADR1(变量名)连续存放的100个字型无符号整数中找出最大数,并将此数及其偏移地址分别放入变量MAX和MAXM中。 8. DATA SEGMENT MOV AX,ES:[SI] ADR1 DW 100 DUP(?) LOP1: CMP AX,ES:[SI] MAX DW ? JAE LOP3 MAXM DW ? MOV AX,ES:[SI] DATA ENDS MOV ES:[MAXM],SI

CODE SEGMENT LOP3: ADD SI,2 ASSUME CS:CODE,DS:DATA,ES:DATA LOOP LOP1 MAIN PROC FAR MOV ES:[MAX],AX MOV AX,DATA MOV AH,4CH MOV ES,AX INT 21H MOV SI,OFFSET ADR1 MAIN ENDP MOV CX,100 CODE ENDS MOV ES:[MAXM],SI END MAIN

9.已知(AX)=4BD5H,统计AX中1的个数和0的个数,并分别放在BL和DL中。编写程序段实现该功能。

9、 MOV AX,4BD5H INC DL MOV BL,0 JMP L3 MOV DL,0 L2: INC BL MOV CX,16 L3: LOOP L1 L1: SHL AX,1 HLT JC L2

10.有一个首地址为ARRAY的N个字的数组,请编程序使该数组中的数按照从大到小的次序排序。(采用冒泡排序算法) 10. DATA SEGMENT MOV BX,0 ARRAY DW A1,A2,A3,…,AN LOOP2: MOV AX,ARRAY[BX] DATA ENDS CMP AX,ARRAY[BX+2] PROG SEGMENT JGE CONTINUE ASSUME DS:PROG,DS:DATA XCHG AX,ARRAY[BX+2] MAIN PROC FAR MOV ARRAY[BX],AX START: PUSH DS CONTINUE: ADD BX,2 SUB AX,AX LOOP LOOP2 PUSH AX MOV CX,DI MOV AX,DATA LOOP LOOP1 MOV DS,AX RET MOV CX,N MAIN ENDP DEC CX PROG ENDS LOOP1: MOV DI,CX END START

11.统计从01000H内存单元开始的100个字(WORD)型带符号数中的正数、负数和零的字(WORD)个数。

答:设正数个数存放于BX中,负数个数存放于DI中,零的个数存放于DX中 MOV AX,0100H JZ ZERO MOV DS,AX JL NEGAT MOV BX,0 INC BX MOV DX,0 JMP NEXT1 MOV DI,0 ZERO: INC DX MOV SI,0 JMP NEXT1 MOV CX,100 NEGAT: INC DI NEXT: MOV AX,[SI] NEXT1: ADD SI,2 CMP AX,0 LOOP NEXT

2.实现两个十六位二进制数的加法。要求加数放在FIRST开始单元,被加数放在SECOND开始单元,和数放在SUM单元。 答: MOV AX,FIRST ADD AX,SECOND MOV SUM,AX

1.一个8088系统中有一8255A,8255A各口设置如下:A组与B组均工作于方式0,A口为数输入,B口为输出,C口高位部分为输出,低位部分为输入,A口地址设为40H。 1) 写出工作方式控制字 2) 对8255A初始化

3) 从A口输入数据,将其取反后从B口送出 答: 1)10010001B 即91H

2) MOV AL,91H; OUT 43H,AL

3)IN AL,40H; NOT AL; OUT 41H,AL

2.设8255A的4个寻址地址号为0060H~0063H,试编写下列各种情况下的初始化程序。 1) 将A组和B组设置成方式0,A口,B口为输入,C口为输出。 2) 将A组工作方式设置成方式2,B组为方式1,B口作为输出。 3) 将A口,B口均设置成方式1,均为输入,PC6和PC1为输出.

4) A口工作在方式1,输入;B口工作在方式0,输出;C口高4位配合A口工作,低4位为输入。 答: 1) MOV AL,92H 2) MOV AL,0C4H 3) MOV AL,0B6H 4) MOV AL,0B1H

OUT 63H,AL OUT 63H,AL OUT 63H,AL

OUT 63H,AL

3.8255A控制字如下,8255A端口地址为:160H、162H、164H、166H,端口A方式0输出,端口B方式0输入,端口C方式0输出。编写程序实现初始化,并将端口B内容的2倍与端口C的内容求和后将结果取反送到端口A。

答:根据端口地址知,端口A地址为:160H,端口B地址为:162H,端口C地址为:164H,控制端口地址为:166H。端口A方式0输出,端口B方式0输入,端口C方式0输入知:控制字8BH。

MOV AL, 8BH MOV DX, 164H

MOV DX, 0166H IN AL, DX

OUT DX, AL ADD AL, BL MOV DX, 0162H NOT AL IN AL, DX MOV DX, 0160H MOV BL, AL OUT DX, AL

ADD BL, AL

4.8255A的工作方式控制字和C口的按位置位/复位控制字有何差别?若将C口的PC2引脚输出高电平(置位),假设8255A控制口地址是303H,程序段应是怎样的?

答:工作方式控制字的最高位为1,而C口的按位置位/复位控制字最高位为0 MOV DX,303H MOV AL,80H OUT DX,AL MOV AL,05H OUT DX,AL

搜索更多关于: 中北大学微机原理80分考卷 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

1.从BUFF单元起有一个字符串(长度小于65535),以'*'结束,编写一个完整程序求该字符串长度存入LENT单元,并统计字符串中含有大写英文字符的个数并存入COUNT单元。要求源程序具备必要的伪指令和段说明。 1. DATA SEGMENT INC CX BUFF DB 'ABCD…….*' CMP AL,'A' LENT DW ? JC NEXT COUNT DW ? CMP AL,'Z' DATA ENDS JNC NEXT CODE SEGMENT INC DX ASSUME CS:CODE,DS:DATA NEXT: INC BX START:MOV AX,DATA JMP LP MOV DS,AX DONE: INC CX

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com