微机原理及应用复习题 下载本文

2、阅读程序,加注必要说明,回答所提问题 1.设某数据区定义如下:

ORG 0100H

NEME DB ‘TOM’,20

DB ‘ROSE’,25 DB ‘KATE’,22

下列各组指令,若为合法指令,请写出执行结果,若为非法指则写出错误原因。

(1) MOV SI,5

LEA DI,NAME[SI+6]

MOV AL,[DI]

(AL)=______’T’__________ (2) MOV SI, 4 LEA BX, NAMES

CMP [BI] [SI], BYTE PTR NAMES+10 (SF)=___________________

2.设初值(AX)=4321H,(DX)=8765H,则

MOV CL, 04H SHL DX, CL MOV BL, AH SHL AX, CL SHR BL, CL OR DL, BL

上述程序执行后(DX)=______7654H____;(AX)=____3210H____________.

3.设有100个字节数据(补码),存放在数据段中EA=2000H的存储区内。以下程序应能从该数据中找出最大的一个数并存入同一数据段EA=2100H的单元中,请完成该程序(在空白处填入适当的语句)。

MAX: MOV BX,2000H MOV AL,[BX]

MOV CX,____100_______ LOOP1: INC BX

CMP AL, [BX]

_____JG_____, LOOP2 MOV AL, [BX] LOOP2: DEC CX

JNZ ___LOOP1__________ MOV _____[EA]_________,AL

4.设已知附加数据段中字数组DATA1中定义如下: DATA1 DW, 123 -4, -1024 FFFFH, 0 DW, 666, 888, ‘A’, -1, ABCDH

执行下列程序段,试问结果(AX)﹦_____________;(BX)=_____________. TEST1: MOV CX,10 DEC CX LEA DI,DATA1 MOV AX,BX

CHKMIN: ADD DI,2 CMP ES:[DI], BX JAE CHKMAX MOV BX,ES:[DI] JMP SHORT NEXT CHKMAX: CMP ES:DI,AX JBE NEXT MOV AX, ES:[DI] NEXT: LOOP CHKMIN

5、阅读下列汇编语言程序,写出程序执行后指定单元的内容和寄存器的内容。

Data segment at 2000H Org 0100H

Array DB 0FEH,86H,95H,21H,79H,05H,53H,47H COUNT EQU $-ARRAY DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA BEGIN:MOV AX,DATA MOV DS,AX MOV DX,2 LOP1: MOV CS,COUNT MOV BX,CX MOV SI,CX

LOP2: MOV AL,ARRAY[SI-1] CMP AL,ARRAY[SI-2] JGE NEXT

XCHG AL,ARRAY[SI-2] MOV ARRAY[SI-1],AL MOV BX,CX NEXT: DEC SI DEC CX CMP CX,DX JGE LOP2 CMO BX,COUNT JE DONE INC DX JMP LOP1 DONE:HLT CODE ENDS END BEGIN

程序执行结果:(20100H)=_________, (20107H)=_________;

BX=______________; CX=______________; DX=______________。

6. 源程序如下:

MOV CL,4

MOV AX,[2000H] SHL AL,CL SHR AX,CL MOV [2000H],AX

试问:若程序执行前,数据段内(2000H)=09H,(2001H)=03H, 则执行后有(2000H)=_39H____,(2001H)=___00H___。

本程序段的功能_________________________。 7. 源程序如下:

MOV AL,0B7H AND AL,0DDH XOR AL,81H OR AL,33H

JZ LAB1 JMP LAB2

试问:执行程序后AL=__00H_____;

程序将转到哪一个地址执行:____LAB2______。 8. 源程序如下: MOV CX,9 MOV AL,01H MOV SI,1000H NEXT: MOV [SI],AL INC SI SHL AL,1 LOOP NEXT

试问:执行本程序后有:AL=___00H__;SI=___1008H___;CX=___0___;

本程序的功能是______________________________。 9. 某系统中8253占用地址为100H~103H。初始化程序如下: MOV DX, 103H

MOV AL, 16H OUT DX, AL SUB DX, 3 OUT DX, AL

试问:此段程序是给8253的哪一个计数器初始化?安排工作在哪种工作方式?__ _计数器0_____方式3________;

若该计数器的输入脉冲的频率为1MHZ,则其输出脉冲的频率为:____45KHZ_______。 10. 已知某8255A在系统中占用88~8BH号端口地址,现欲安排其PA,PB,PC口全部为输出,

PA,PB口均工作于方式0模式,并将PC6置位,使PC3复位,试编写出相应的初始化程序:

MOV AL, 80H OUT 8BH,AL MOV AL,ODH OUT 8BH,AL

MOV AL,06H OUT 8BH,AL

11. 编程: 已知某输入设备的数据端口地址为40H,状态端口地址为41H,其中D0位为“1”时,表示“READY”状态。试编程实现:

(1)采用查询方式从该设备输入20个ASCII码表示的十进制数,并求出这20个十进制数的累加和;

(2)将此累加和转换成BCD码,并存放到NBCDH(百位数)和NBCDL(存十位和个位数)单元中。 注:只要求写出程序的可执行部分,可以不写任何伪指令。 参考程序:MOV CX,20

MOV BL,0 INLOOP: IN

TEST

AL,41H AL,01H

JZ INLOOP IN AL,40H

AND AL,OFH ;ASCII十进制 (BCD)

ADD

BL,AL

INLOOP ; 共输入20个

LOOP

MOV AL,BL ;累加和?AL MOV AH,0

MOV BL,100

DIV

BL

;AX?BL?AL,余数?AH

MOV NBCDH,AL ; 存百位数 MOV AL,AH