2011年微机原理期末复习题

MOV AL,0FFH

12、下面的程序段是统计AX中16位二进制数1的个数,并将结果放在CX中,填空使程序完成预定的功能。

XOR CX,CX L1: AND AX,AX JZ STOP SHL AX,1 (CMC) (JNZ L2) INC CX L2: JMP L1 STOP:HLT

13、下面的程序段是求8个无符号数累加和, 最后结果用双字表示,存在YAH和YAL单元,填空使程序完成预定的功能。 DATA SEGMENT

TABLE DW 34,789,67,78,345,89,78,60 YAH DW 0 YAL DW 0 DATA ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,0

XOR AX, AX ;清AX MOV BX, OFFSET TABLE MOV CX, 8 CLC

LP: ADD AX, [BX] (ADC DX,0 )

( CLC ) DON: INC BX

INC BX

LOOP LP MOV YAL,AX ;存和 MOV YAH,DX MOV AH,4CH INT 21H CODE ENDS

END START

14、8086系统中接口连接关系如下图所示。要求回答以下问题:

(1) 试分别确定8255,8253,8259及8251的端口地址;

(2) 设8255的PA口为输出,PB口为输入,试写出对PA口和PB口执行输入/输出操作的指令。 ( STOB )

ALEAD7~AD0G373A7~A08086CPUM/IOA6A5A4C B AA7A0Y0Y1CSA2G1G2AG138Y2Y3A1CS8253A1A0A2A1A1A08255

8255的端口地址为:___________________________________; 8253的端口地址为:___________________________________; 8259的端口地址为:___________________________________; 8251的端口地址为:___________________________________; 对PA口操作的I/O指令为_______________________________; 对PB口操作的I/O指令为______________________________。

A7 A6 A5 A4 A3 A2 A1 A0

1 0 0 0 任意 ? ? 0 Y0 1 0 0 1 任意 ? ? 0 Y1

1 0 1 0 任意 ? ? 0 Y2

1 0 1 1 任意 ? ? 0 Y3 ? 8255的端口地址为 80H, 82H, 84H, 86H

8253的端口地址为 90H, 92H, 94H, 96H 8259的端口地址为 A0H, A2H,

8251的端口地址为 B0H, B2H,

(2) OUT 80H, AL

IN AL, 82H 源程序如下:

MOV AH, 0 MOV AL, 9 MOV BL, 8 ADD AL, BL AAA AAD DIV AL

结果AL=01H,AH=00 H,BL=08H。

15、源程序如下:

MOV AX, SEG TABLE ;TABLE为表头 MOV ES, AX

MOV DI, OFFSET TABLE MOV AL, ‘0’ MOV CX, 100 CLD

REPNE SCASB

问:1) 该段程序完成什么功能?

2) 该段程序执行完毕之后,ZF和CX有几种可能的数值?各代表什么含义?

答:(1) 从目的串中查找是否包含字符 ‘0’,若找到则停止,否则继续重复搜索。明已找到字符

ZF=0, 说明未找到字符 CX?0,说明中途已找到字符退出 CX=0,且ZF=0说明串中无字符 ‘0’

16、源程序如下:

CMP AX, BX

JNC L1 JZ L2

JNS L3 JNO L4 JMP L5

设AX=74C3H,BX=95C3H,则程序最后将转到哪个标号处执行?试说明理由。 ∵ 74C3H ? 95C3H

(2) ZF=1,

DF00H

且有:CF=1, ZF=0, SF=1, OF=1 程序将转到L5标号处执行。

17、源程序如下:

MOV DX, 143H MOV AL, 77H OUT DX, AL MOV AX, 0 DEC DX DEC DX OUT DX, AL MOV AL, AH OUT DX, AL

设8253的端口地址为140H~143H,问: (1)程序是对8253的哪个通道进行初始化? (2)该通道的计数常数为多少?

(3)若该通道时钟脉冲CLK的周期为1μs,则输出脉冲OUT的周期为多少μs? 答:

(1) 程序对8253的通道1进行初始化。 (2)计数常数为10000D,BCD计数。 (3)工作在方式3,方波速率发生器 周期=10000?1μs=10000μS=10ms

六、编程题

1、将AL中的数,高4位保持不变,低4位置零。 参考程序: CODE SEGMENT

ASSUME CS:CODE,DS:CODE GO: MOV AX,DATA

MOV DS,AX AND AL,0F0H

EXIT: CODE ENDS END GO

2.从1000H单元开始,连续存放100个字符串,要查出第一个$符号, 编程序将第一个$字符地址送BX中。 参考程序: DATA SEGMENT ORG 1000H

DAT DB DATA ENDS CODE SEGMENT

ASSUME START:

CS:CODE,DS:DATA,ES:DATA

AX,DATA DS,AX ES,AX BX,1000H CX,100 AX,AX AL,'$'

MOV MOV MOV CLD MOV MOV XOR MOV

FOUND PROC NEAR

'1234$567$8'

CALL FOUND

PUSH AX CLD REPNE XOR AND JZ

DEC MOV

OVER: RET

POP AX

FOUND ENDP

CODE

ENDS END START

3、假设某班80个学生某门课的成绩存放在数据区BUF开始的字节单元中,请编程统计小于60分的人数,60— 80分的人数,大于80分的人数,并将统计结果分别存于S1、S2、 S3字节单元中。 要求写出注释。 参考程序:

MOV BX,OFFSET BUF MOV CX,80 MOV S1,0 MOV S2,0 MOV S3,0

COMPARE:MOV AL,[BX]

CMP AL,60 JB DON1 CMP AL,80

JBE DON2 ;低于等于80,高于60转 INC S3 ;高于80,S3+1 JMP LP

DON1:INC S1

JMP LP

DON2:INC S2 LP: INC BX

LOOP COMPARE HLT

4、从2000H单元开始的区域,存放100个字节的字符串,其中有几个#符号(#的ASCII码为23H),将第一个#符号替换成0,并

将地址送DX,试写出程序段。 参考程序:

MOV DI,2000H CLD

MOV AL,23H MOV CX,100

REPNZ SCASB ;AL -‘#’ JNZ STOP DEC DI MOV DX,DI

STOP:HLT

5、从地址2100H单元开始,连续存放8个字节的无符号数,现在用BX作地址指针,编程序求和,并将结果存在210AH单元中。 ORG 2100H DATA SEGMENT

DAT1 DB 1,2,3,4,5,6,7,8 DB 1,2,3,4,5,6,7,8 DB 0,0,0,0,0,0,0,0 SUM DB ?

;没找到,退出 ;替换为0 ;找到,退回到原地址

;低于60转 SCASB AX,AX CX,0FFH OVER BX AL,[DI]

MOV [DI],00H

联系客服:779662525#qq.com(#替换为@)