8282/8283或74LS373) 8286/8287或74LS245) 双向数据总线收发器(2片? 23:49
15. 时钟产生器8284A与8088CPU相连时,输入的晶振频率为14.31818MHz从输出端可以产生哪些时钟信号?他们的频率分别是多少?8284A与8086-2相连时,晶振频率为8MHZ则输出的OSC和CLK86-2信号的频率分别是多少? 答:
16. 8086最大模式配置电路中,8288总线控制的主要功能是什么?MEMR、MEMW、IOR 和IOW信号相当于最小模式中哪些信号的组合?
答:
17. 什么叫总线周期?一个总线周期一般需要几个时钟周期?若8086-2的时钟频率为8MHz,它每秒可执行多少条指令?
答:总线周期通常指的是CPU完成一次访问MEM或I/O端口操作所需要的时间。一个总线周期由几个时钟周期组成。
8086的基本总线周期为4个时钟周期 每秒可执行的指令
18. 8086工作于最小模式,执行存储器读总线周期,T1~T4周期中主要完成哪些工作? 答:T1周期:输出20位地址信号,ALE地址锁存允许信号高电平有效 T2周期:高4位输出状态信号,低16位高阻态,准备接收数据 T3周期:高4位维持状态信号,低16位接收数据 T4周期:读总线周期结束
5
第三章
1.分别指出下列指令中的源操作数和目的操作数的寻址方式: (1)MOV SI,200 立即寻址 寄存器寻址
(2)MOV CX,DATA[SI] 寄存器相对寻址 寄存器寻址 (3)ADD AX,[BX][DI] 基址变址寻址 寄存器寻址 (4)AND AX,BX 寄存器寻址 寄存器寻址 (5)MOV [SI],AX 寄存器寻址 寄存器间接寻址 (6)PUSHF 寄存器寻址 寄存器间接寻址 2.写出以下指令中内存操作数的所在地址。 (1)MOV AL,[BX+5] DS (2)MOV [BP+5],AX SS (3)INC BYTE PTR[SI+3] DS (4)MOV DL,ES:[BX+DI] ES (5)MOV BX,[BX+SI+2] DS
3.设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,试问: (1)执行指令PUSH AX后SP=?
答:执行指令PUSH AX后 (SP)=2000H-2=1FFEH;
(2)再执行PUSH BX及POP AX后SP=? AX=? BX=?
答:再执行PUSH BX及POP AX后 (SP)=1FFEH, (AX)=5000H, (BX)=5000H 4.要想完成把[2000H]送[1000H]中,用指令:
MOV[1000H],[2000H]是否正确?如果不正确,应用什么方法? 答:把[2000H]送[1000H]中,用指令 MOV [1000H],[2000H]不正确,应改为:MOV AX,[2000H] MOV [1000H],AX
5.假如想从100中减去AL中的内容,用SUB100,AL是否正确?如果不正确,应用什么方法?
答:想从100中减去AL中的内容,用SUB 100,AL不正确, 应改为: MOV BL,100 SUB BL,AL
6.用两种方法写出从88H端口读入信息的指令。再用两种方法写出从42H口输出100H的指令。
答: 读入: (1)IN AL,88H (2)MOV DX,0088H IN AL, DX 输出: (1)MOV AL,100H OUT 42H,AL (2)MOV DX,0042H MOV AL,100H OUT DX,AL
7.假如AL=20H,BL=10H,当执行CMP AL,BL后,问:
(1)若AL,BL中内容是两个无符号数,比较结果如何?影响哪几个标志位? 答:此时 AL>BL, CF=0,ZF=0
(2)若AL,BL中内容是两个有符号数,结果又如何?影响哪几个标志位? 答:此时 AL>BL, OF=0,SF=0
6
第四章
1.编一个程序,统计一个8位二进制数中的为“1”的位的个数。 答案:假设AL中存放的是需要的8位数 xor ah,ah mov cx,8
loop1: sal al,1 ;左移 adc ah,0 ;加CF loop loop1
最终结果AH中为1的个数。 2.编一个程序,使放在DATA及DATA+1单元的两个8位带符号数相乘,乘积放在DATA+2及DATA+3单元中(高位在后)。
--先运行如下sql,建立一个合并函数
create function fmerg(@company varchar(200)) returns varchar(8000) as begin
declare @str varchar(8000) set @str=''
select @str=@str+','+jobname from zhaopin where company=@company set @str=right(@str,len(@str)-1) return(@str) End go
--调用自定义函数得到结果
select distinct company,dbo.fmerg(company) from zhaopin
3.若在自1000H单元开始有一个100个数的数据块,要把它传送到自2000H开始的存储区中去,用以下三种方法,分别编制程序: (1)不用数据块传送指令;
(2)用单个传送的数据块传送指令; (3)用数据块成组传送指令。 解:
(1) LEA ST, 1000H LEA DI, 2000H MOV CX, 100 L1: MOV AX, [SI] MOV [DI], AX LOOP L1 HLT
(2) LEA SI, 1000H LEA DI, 2000H MOV CX, 100 CLD L1: MOVSB
7
LOOP L1 HLT
(3) LEA ST, 1000H LEA DI, 2000H MOV CX, 100 CLD
REP MOVSB HLT
4.利用变址寄存器,编一个程序,把自1000H单元开始的100个数传送到自1070H开始的储存区中去。 解:
LEA SI, 1000H LEA DI, 1070H MOV CX, 100 CLD
REP MOVSB HLT
5.要求同题4,源地址为2050H,目的地址为2000H,数据块长度为50。 解:
LEA SI, 2050H
LEA DI, 2000H MOV CX, 50 CLD
REP MOVSB HLT
6.编一个程序,把自1000H单元开始的100个数传送至1050H开始的存储区中(注意:数据区有重叠)。 解:
LEA SI, 1000H LEA DI, 1050H ADD SI, 63H ADD DI, 63H MOV CX, 100 STD
REP MOVSB HLT
7.在自0500H单元开始,存有100个数。要求把它们传送到1000H开始的存储区中,但在传送过程中要检查数的值,遇到第一个零就停止传送。 解:
LEA SI, 0500H
LEA DI, 1000H MOV CX, 100 N1: MOV AL, [SI] CMP AL, 0
8