微机原理经典习题.docx
《微机原理经典习题.docx》由会员分享,可在线阅读,更多相关《微机原理经典习题.docx(11页珍藏版)》请在冰点文库上搜索。
![微机原理经典习题.docx](https://file1.bingdoc.com/fileroot1/2023-4/30/3c450e09-65ea-4939-8651-73d4d4388c24/3c450e09-65ea-4939-8651-73d4d4388c241.gif)
微机原理经典习题
1、当WR=1,RD=0,M/IO=1时,表示CPU当前正在进行读存储器操作。
2、已知CS=1055H,DS=250AH,ES=2EF0H,SS=8FF0H,
DS段有一操作数,其偏移地址=0204H,
1)画出各段在内存中的分布
2)指出各段首地CS:
10550HDS:
250A0H
ES:
2EF00HSS:
8FF00H
3)该操作数的物理地址=?
解:
各段分布及段首址见右图所示。
操作数的物理地址为:
250AH×10H+0204H=252A4H
3、若已知(SS)=1000H、(SP)=2000H;则堆栈段的段首地址=?
1000H栈顶地址=?
12000H
若现在把1234H送入堆栈,则它所在的存储单元地址=?
1988H
若该段最后一个单元地址为2FFFH,则栈底地址=?
12FFFH
4、MOVAX,[3102H]
AL=(3102H),AH=(3103H)
如果(DS)=2000H,(23012H)=CDH,(23013H)=ABH;指令执行后,AX=?
ABCDH
5、MOVAX,[SI]
若(DS)=6000H,(SI)=1200H,(61200H)=44H,(61201H)=33H
则指令执行后,(AX)=3344H。
7、保留AL中低4位,高4位清0。
ANDAL,0FH
AL中有字符’a’~’z’,将其转换成大写。
ANDAL,01011111B
8、把AH和AL中的非压缩BCD码组合成压缩的BCD码,放到AL中。
MOVCL,4
SHLAH,CL
ORAL,AH
9、把AX寄存器清零。
①MOVAX,0②XORAX,AX
③ANDAX,0④SUBAX,AX
10、把AL中的数x乘10
SALAL,1;2x
MOVAH,AL
SALAL,1;4x
SALAL,1;8x
ADDAL,AH;8x+2x=10x
11、(BX)=84F0H,把(BX)中的16位数每4位压入堆栈
MOVCH,4;循环次数
MOVCL,4;移位次数
NEXT:
ROLBX,CL
MOVAX,BX
ANDAX,0FH
PUSHAX
DECCH
JNZNEXT
12、用串传送指令实现200个字节的数据传送:
LEASI,MEM1
LEADI,MEM2
MOVCX,200
CLD
REPMOVSB
13、把从A000H开始的2KB内存单元清零。
程序段如下:
MOVDI,0A000H
MOVAX,0
MOVCX,1024
CLD
REPSTOSW
14、从一个字符串中查找一个指定的字符
messdb‘COMPUTER’
leadi,mess
moval,‘T’
movcx,8
cld
repnescasb
15、比较两个字符串,找出不相匹配的地方
leasi,mess1
leadi,mess2
movcx,8
cld
repecmpsb
16、、是双精度数,分别存于DX,AX及BX,CX中,
>时转L1,否则转L2
CMPDX,BX
JGL1
JLL2
CMPAX,CX
JAL1
L2:
……
L1:
……
18、给1A000H开始的256个内存单元均减去1,若发现某个单元减为0则立即退出循环,其后的单元不再减1。
程序段如下:
(逻辑地址为1A00:
0H)
MOVAX,1A00H
MOVDS,AX;1A00H段
MOVDI,-1
MOVCX,256
GOON:
INCDI
DECBYTEPTR[DI]
LOOPNZGOON
HLT
21.说明下面两个定义的不同之处:
DB‘AB’;41H在低字节,42H在高字节
DW‘AB’
22.TABLEDB10DUP(?
)
BUFFERDWTABLE,$+3
设TABLE的偏移地址为0080H,则汇编后$+3的内容为008fh
23.求AX和BX中两无符号数之差的绝对值,结果放在内存200H单元中。
MOVAX,[300H]
MOVBX,[302]
SUBAX,BX
JAAA
NEGAX
AA:
MOV[200H],AX
INT20H
24.BUF中有N个有符号数,分离其中的正负数,分别送入BUF1和BUF2中。
这是一个循环次数已知的程序设计,用计数循环完成。
DATASEGMENT
BUFDB12H,34H,-56H,-98H,096H,68H,56H,80H
N=$-BUF
BUF1DBNDUP(0)
BUF2DBNDUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVDX,DATA
MOVDS,AX
LEASI,BUF
LEADI,BUF1
LEABX,BUF2MOVCX,N
AA:
MOVAL,[SI]
INCSI
CMPAL,0
JGEBB
MOV[BX],AL
INCBX
JMPCC
BB:
MOV[DI],AL
INCDI
CC:
DECCX
JNZAA
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
25.OUT指令将使总线的IOW#信号有效,IN指令将使总线的IOR#信号有效
27.中断步骤:
中断请求、中断判优、中断响应、中断服务
、中断返回
28.中断类型号为23(17H),中断服务程序的入口地址5CH、2340H:
7890H,存放在内存的哪些内容单元?
请用8086汇编语言直接编程,将中断服务程序的入口地址填入中断向量表中。
PUSHES
MOVAX,0000H
MOVES,AX
MOVES:
WORDPTR[5CH],12ACH
MOVES:
WORDPTR[5EH],2010H
POPES
29.
29.中断类型码为48H的中断处理子程序的名字为int48h,编写程序段将该中断处理子程序的入口地址放入向量表。
CLI
MOVAX,0
MOVDS,AX
MOVSI,48H*4
MOVAX,OFFSETint48h
MOV[SI],AX
MOVAX,SEGint48h
MOV[SI+2],AX
STI
30.若ICW2命令字为48H,则IR0的中断向量码为48H,IR7的中断向量码为4FH,
31.主片的IR4与从片的INT线连接,则主片的ICW3=10H,从片的ICW3=04H
32.按以下要求初始化8259A,设端口地址为2000H和2001H:
–接口地址为20H和21H;
–中断为上升沿触发;单片8259A;不写ICW4;
–与IR0-IR3对应的中断向量码为08H-0BH;
–IR4-IR7不使用
INIT8259A:
MOVDX,2000H;A0=0,写ICW1
MOVAL,12H;上升沿触发,单片,不写ICW4
OUTDX,AL
MOVDX,2001H;A0=1,写ICW2,OCW1
MOVAL,08H;ICW2
OUTDX,AL
MOVAL,0F0H;OCW1:
屏蔽IR4-IR7
OUTDX,AL
33.8255A口地址40H,A口工作在方式0输出,B口工作在方式1输入,C口的PC5输出为1。
方式字:
10000110B
复位置位字:
00001011B
初始化程序:
MOVAL,10000110B
OUT43H,AL
MOVAL,00001011B
OUT43H,AL
36.8253地址为40H~43H,计数器1、
方式1、计数初值1020H。
MOVAL,72H;方式字
OUT43H,AL
MOVAL,20H;计数低位
OUT41H,AL
MOVAL,10H;计数高位
OUT41H,AL
37.采用8253作定时/计数器,其接口地址为0120H~0123H。
输入8253的时钟频率为2MHz。
计数器0:
每10ms输出1个CLK脉冲宽的负脉冲计数器1:
产生10KHz的连续方波信号
计数器2:
启动计数5ms后OUT输出高电平。
并编写初始化程序。
⏹确定计数初值:
CNT0:
10ms/0.5us=20000
CNT1:
2MHz/10KHz=200
CNT2:
5ms/0.5us=10000
⏹确定控制字:
CNT0:
方式2,16位计数值00110100
CNT1:
方式3,低8位计数值01010110
CNT2:
方式0,16位计数值10110000
CNT0:
MOVDX,0123H
MOVAL,34H
OUTDX,AL
MOVDX,0120H
MOVAX,20000
OUTDX,AL
MOVAL,AH
OUTDX,AL
CNT1:
……
CNT2:
……
例,某外部可屏蔽中断的类型码为0AH,它的中断服务程序的入口地址是2010H:
12ACH,请用8086汇编语言直接编程,将中断服务程序的入口地址填入中断的向量表中。
中断类型码为0AH,中断向量地址=0AH*4=28H,将12ACH送0000H:
0028H,将2010H送0000H:
002AH。
方法一:
PUSHES
MOVAX,0000H
MOVES,AX
MOVES:
WORDPTR[28H],12ACH
MOVES:
WORDPTR[2AH],2010H
POPES
方法二:
PUSHES
MOVAX,0000H
MOVES,AX
MOVDI,0AH*4
MOVAX,12ACH
STOSW
MOVAX,2010H
STOSW
POPES