微机原理与接口技术程序设计.docx

上传人:b****5 文档编号:8782647 上传时间:2023-05-14 格式:DOCX 页数:20 大小:394.01KB
下载 相关 举报
微机原理与接口技术程序设计.docx_第1页
第1页 / 共20页
微机原理与接口技术程序设计.docx_第2页
第2页 / 共20页
微机原理与接口技术程序设计.docx_第3页
第3页 / 共20页
微机原理与接口技术程序设计.docx_第4页
第4页 / 共20页
微机原理与接口技术程序设计.docx_第5页
第5页 / 共20页
微机原理与接口技术程序设计.docx_第6页
第6页 / 共20页
微机原理与接口技术程序设计.docx_第7页
第7页 / 共20页
微机原理与接口技术程序设计.docx_第8页
第8页 / 共20页
微机原理与接口技术程序设计.docx_第9页
第9页 / 共20页
微机原理与接口技术程序设计.docx_第10页
第10页 / 共20页
微机原理与接口技术程序设计.docx_第11页
第11页 / 共20页
微机原理与接口技术程序设计.docx_第12页
第12页 / 共20页
微机原理与接口技术程序设计.docx_第13页
第13页 / 共20页
微机原理与接口技术程序设计.docx_第14页
第14页 / 共20页
微机原理与接口技术程序设计.docx_第15页
第15页 / 共20页
微机原理与接口技术程序设计.docx_第16页
第16页 / 共20页
微机原理与接口技术程序设计.docx_第17页
第17页 / 共20页
微机原理与接口技术程序设计.docx_第18页
第18页 / 共20页
微机原理与接口技术程序设计.docx_第19页
第19页 / 共20页
微机原理与接口技术程序设计.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

微机原理与接口技术程序设计.docx

《微机原理与接口技术程序设计.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术程序设计.docx(20页珍藏版)》请在冰点文库上搜索。

微机原理与接口技术程序设计.docx

微机原理与接口技术程序设计

程序设计题

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

解:

设正数个数存放于BX中,负数个数存放于DI中,零的个数存放于DX中

MOVAX,0100HJZZERO

MOVDS,AXJLNEGAT

MOVBX,0INCBX

MOVDX,0JMPNEXT1

MOVDI,0ZERO:

INCDX

MOVSI,0JMPNEXT1

MOVCX,100NEGAT:

INCDI

NEXT:

MOVAX,[SI]NEXT1:

ADDSI,2

CMPAX,0LOOPNEXT

2、实现两个十六位二进制的加法,要求加数放在FIRST开始单元,被加数放在SECOND开始单元,和数放在SUM单元

解:

MOVAX,FIRST

ADDAX,SECOND

MOVSUM,AX

3从BUFF单元起有一个字符串(长度小于65535),以'*'结束,编写一个完整程序求该字符串长度存入LENT单元,并统计字符串中含有大写英文字符的个数并存入COUNT单元。

要求源程序具备必要的伪指令和段说明。

1.

DATASEGMENT

INCCX

BUFFDB'ABCD…….*'

CMPAL,'A'

LENTDW?

JCNEXT

COUNTDW?

CMPAL,'Z'

DATAENDS

JNCNEXT

CODESEGMENT

INCDX

ASSUMECS:

CODE,DS:

DATA

NEXT:

INCBX

START:

MOVAX,DATA

JMPLP

MOVDS,AX

DONE:

INCCX

LEABX,BUFF

MOVLENT,CX

MOVCX,0

MOVCOUNT,DX

MOVDX,0

MOVAH,4CH

LP:

MOVAL,[BX]

INT21H

CMPAL,'*'

CODE

ENDS

JZDONE

ENDSTART

4.有一带符号8位数X存于DAT单元.编一个程序段判断该数,若x小于0则将0FFH送MARK单元;若X等于0则将MARK+1单元置0FFH;若X大于0则置MARK+2单元为0FFH。

MOVAL,DAT

JMPDONE

ANDAL,AL

LPl:

MOVMARK,0FFH

JSLP1

JMPDONE

JZLP2

LP2:

MOVMARK+1,0FFH

MOVMARK+2,0FFH

DONE:

HLT

5.已知有X、Y、Z三个字变量,存放无符号整数,请编一个完整的程序实现公式Z=(X+Y)/(X-Y+600)(不考虑溢出情况)。

DSEGSEGMENTSUBBX,Y

XDW?

ADDBX,600

YDW?

MOVAX,X

ZDW?

ADDAX,Y

DSEGENDSMOVDX,0

CSEGSEGMENTDIVBX

ASSUMECS:

CSEG,DS:

DSEGMOVZ,AX

MAINPROCFARMOVAH,4CH

BEGIN:

MOVAX,DSEGINT21H

MOVDS,AXMAINENDP

MOVBX,XCSEGENDS

ENDBEGIN

6.AX寄存器中存放着4位十六进制数。

试编写一个汇编语言程序,将这4位十六进制数分别转换为相应的ASCII码,并依次存放到RESULT数组的4个字节中去,要求用调用子程序的方法实现。

CODESEGMENTHASCPROCNEAR

ASSUMECS:

CODE,DS:

CODEMOVDL,AL

START:

MOVBX,CODEANDDL,0FH

MOVDS,BXCMPDL,9

MOVCL,4JAL2

MOVBL,4ADDDL,30H

MOVSI,OFFSETRESULTL1:

RET

LP:

CALLHASCL2:

ADDDL,37H

MOV[SI],DLJMPL1

INCSIHASCENDP

SHRAX,CLRESULTDB4DUP(?

DECBLCODEENDS

JNZLPENDSTART

EXIT:

MOVAH,4CH

INT21H

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

方法1方法2方法3

MOVCX,0NOTAXNEGDX

SUBCX,AXNOTDXNEGAX

MOVAX,CXADDAX,1SBBDX,0

MOVCX,0ADCDX,0

SBBCX,DX

MOVDX,CX

8.设有两个等长字符串。

试编写一个汇编语言程序,比较它们是否完全相同;若相同,则将字符"Y"送入AL中,否则,将字符"N"送入AL中。

CODESEGMENT

REPECMPSB

ASSUMECS:

CODE,DS:

CODE

JNZNE

START:

MOVAX,CODE

MOVAL,'Y'

MOVDS,AX

JMPEXIT

MOVES,AX

NE:

MOVAL,'N'

CLD

EXIT:

MOVAH,4CH

LEASI,STRING1

INT21H

LEADI,STRING2

STRING1DB'…'

MOVCX,DI

STRING2DB'…'

SUBCX,SI

CODE

ENDS

XORAX,AX

ENDSTART

9.写出程序段,把DX,AX中的双字右移四位。

MOVCL,4SHRDX,CL

SHRAX,CLSHLBL,CL

MOVBL,DLORAH,BL

9.编写一个完整的8086汇编语言程序,从附加段中首地址为ADR1(变量名)连续存放的100个字型无符号整数中找出最大数,并将此数及其偏移地址分别放入变量MAX和MAXM中

DATASEGMENT

MOVAX,ES:

[SI]

ADR1DW100DUP(?

LOP1:

CMPAX,ES:

[SI]

MAXDW?

JAELOP3

MAXMDW?

MOVAX,ES:

[SI]

DATAENDS

MOVES:

[MAXM],SI

CODESEGMENT

LOP3:

ADDSI,2

ASSUMECS:

CODE,DS:

DATA,ES:

DATA

LOOPLOP1

MAINPROCFAR

MOVES:

[MAX],AX

MOVAX,DATA

MOVAH,4CH

MOVES,AX

INT21H

MOVSI,OFFSETADR1

MAIN

ENDP

MOVCX,100

CODE

ENDS

MOVES:

[MAXM],SI

ENDMAIN

10.已知(AX)=4BD5H,统计AX中1的个数和0的个数,并分别放在BL和DL中。

编写程序段实现该功能。

MOVAX,4BD5HINCDL

MOVBL,0JMPL3

MOVDL,0L2:

INCBL

MOVCX,16L3:

LOOPL1

L1:

SHLAX,1HLT

JCL2

11.有一个首地址为ARRAY的N个字的数组,请编程序使该数组中的数按照从大到小的次序排序。

(采用冒泡排序算法)

DATASEGMENT

MOVBX,0

ARRAYDWA1,A2,A3,…,AN

LOOP2:

MOVAX,ARRAY[BX]

DATAENDS

CMPAX,ARRAY[BX+2]

PROGSEGMENT

JGECONTINUE

ASSUMEDS:

PROG,DS:

DATA

XCHGAX,ARRAY[BX+2]

MAINPROCFAR

MOVARRAY[BX],AX

START:

PUSHDS

CONTINUE:

ADDBX,2

SUBAX,AX

LOOPLOOP2

PUSHAX

MOVCX,DI

MOVAX,DATA

LOOPLOOP1

MOVDS,AX

RET

MOVCX,N

MAIN

ENDP

DECCX

PROG

ENDS

LOOP1:

MOVDI,CX

ENDSTART

存储器设计应用题

1.已知有SRAM芯片62256(32K×8)及EPROM芯片27256(32K×8),现用这两种芯片构成8088最小系统内存的一部分,其中SRAM所占的地址空间为40000H--47FFFH,EPROM所占的地址空间为F8000H--FFFFFH,试设计出其原理图。

 

2.给8088CPU系统扩展32K的ROM,且所选用的存储器芯片为8K×8,地址译码器为74LS138,ROM的地址范围从60000H~存储器芯片为8K×8,可知芯片容量为8K,地址线为13条,数据线为8条,而系统要求容量为32K,位数是8,因此为字扩展。

需要的芯片为4个

存储器芯片的地址为:

1)、地址译码器:

3个输入端的信号中必须有:

A13,A14,其对应的位置不同,输出的引脚也不同。

只要输入信号与输出信号一致,且连接到相应的存储器芯片上。

2)、数据线连接正确

3)、地址线连接正确67FFFH,要求写出每一个存储器芯片的地址范围,

画出逻辑连线图。

 

3.设某系统的CPU有16根地址线A15-A0、8根数据线D7-D0。

现需扩展6KB的ROM,地址范围为:

0000H-17FFH,采用2716芯片。

(1)请写出存储器器件2716的数据线和地址线的条数;

(2)计算ROM的芯片数量;

(3)设计存储器扩展原理图,并写出每片ROM的地址范围。

1)存储器2716的数据线有8条,地址线有11条。

2)因为2716的容量为2KB,要扩展6KB,所以需要三片。

3)原理图如下:

4.已知RAM芯片结构如图所示,回答下列问题:

1)该芯片容量为多少?

若要求构成一个2K×8的RAM阵列,需几个这样的芯片?

4

2)若RAM阵列组的起始地址为E1000H,画出存储器系统与8086的电路连接图(8086工作在最小模式),并写出每组RAM芯片的地址空间。

3)编程:

将缓冲区中的10个数据写进E1000开始的10个单元中,并说明如何查看结果?

MOVAX,0E100HMOVCX,10

MOVES,AXCLD

MOVSI,OFFSETBUFREPMOVSB

MOVDI,O

查看结果DE100:

0

5.设某微机系统需要扩展内存RAM32KB,扩充的存储器空间为10000H开始的连续存储区域。

存储器芯片采用16K×8的RAM芯片,CPU使用8088。

1)选用芯片,画出逻辑连接图;

2)写出各片RAM的所在地址区域。

答案:

2)地址范围第一片10000H--13FFFH

第二片14000H--17FFFH

 

6.用4K×4的EPROM存储器芯片组成一个16K×8的只读存储器。

试问:

(1)该只读存储器的数据线和地址线的位数。

(2)根据题意需要多少个4K×4的EPROM芯片?

(3)画出此存储器的组成框图。

答案:

(1)该存储器有14位地址线和8位数据线。

(2)共需总芯片数为8片。

8255编程题

1.一个8088系统中有一8255A,8255A各口设置如下:

A组与B组均工作于方式0,A口为数输入,B口为输出,C口高位部分为输出,低位部分为输入,A口地址设为40H。

1)写出工作方式控制字

2)对8255A初始化

3)从A口输入数据,将其取反后从B口送出

1)10010001B即91H

2)MOVAL,91H;OUT43H,AL

3)INAL,40H;NOTAL;OUT41H,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)MOVAL,92H2)MOVAL,0C4H3)MOVAL,0B6H4)MOVAL,0B1H

OUT63H,ALOUT63H,ALOUT63H,ALOUT63H,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, 8BHMOV DX,164H

MOV DX, 0166HIN  AL,DX

OUT DX, ALADD AL,BL

MOV DX, 0162HNOT AL

IN  AL, DXMOV DX,0160H

MOV BL, ALOUT DX, AL

ADD BL, AL

4用一片8255A芯片设计一基于PC系统总线的I/O接口板,要求:

1)8255A占用的端口地址为300H--306H,画出原理图。

2)设8255A的PA、PB、PC口均工作在方式0,PA口为输入,PB、PC口均为输出,编写8255的初始化程序片段(已知8255A控制字为10010000B)。

3)编写程序片段,将从PA口读入的状态送至PB口输出。

 

(2)MOVDX,306H

MOVAL,90H

OUTDX,AL

3)MOVDX,300H

INAL,DX

MOVDX,302H

OUTDX,AL

5.已知8255的控制口地址为236H,开关信息接在PB口,发光二极管接在PA口,使用8255作为接口芯片,读开关量的状态,并用发光二极管显示输出。

在将开关的信息存放在FIRST单元的同时,发光二极管完成其信息的显示。

要求画出完整的线路连接图并设计相应的程序。

(8086工作在最小模式,8255A相应的控制字为82H)。

MOVDX,236H

MOVAL,82H

OUTDX,AL

MOVAX,SEGFIRST

MOVDS,AX

MOVSI,OFFSETFIRST

LOP:

MOVDX,232H

INAL,DX

MOV[SI],AL

MOVDX,230H

OUTDX,AL

JMPLOP

68255A的工作方式控制字和C口的按位置位/复位控制字有何差别?

若将C口的PC2引脚输出高电平(置位),假设8255A控制口地址是303H,程序段应是怎样的?

答:

工作方式控制字的最高位为1,而C口的按位置位/复位控制字最高位为0

MOVDX,303H

MOVAL,80H

OUTDX,AL

MOVAL,05H

OUTDX,AL

7已知8255A的控制口地址为236H,LED采用共阳级接法。

字型信息接在PB口,字位信息接在PA口,使用8255A作为接口芯片,在两块LED上显示自己的学号。

要求画出完整的线路连接图并设计相应的程序(8086工作在最小模式,8255A相应控制字为80H)。

答案:

见图

MOVDX,236HLOP:

LOOPLOP

MOVAL,80HMOVDX,232H

OUTDX,ALMOVAL,nn;学号高位

MOVCX,000HOUTDX,AL

START:

MOVDX,232HMOVAL,2

MOVAL,nn;学号低位MOVDX,230H

OUTDX,ALOUTDX,AL

MOVAL,1LOP1:

LOOPLOP1

MOVDX,230HJMPSTART

OUTDX,AL

8.若打印机及其工作时序如图所示,当打印机不忙时(BUSY=0),向它送数据(设每次只传送1个字节)并在数据稳定时用负脉冲将数据存于打印机内部,同时设置打印机忙信号,即BUSY=1。

1)用可编程接口芯片8255A将打印机与总线相连接起来。

若规定8255A的地址为0320H~032FH任选,试画出连接电路图。

2)数据段中首地址为BUFFER的区域中存放着100字节要打印的字符,试编写包括8255A初始化的打印程序,并将100个字符打印出来。

9.在一个系统中,8255A的四个端口地址分别为:

420H、422H、424H和426H。

要求:

1)初始化8255A,使端口A、B、C均工作于方式0,端口A作为输入端口,端口B和C作为输出端口。

2)将端口A输入的信息取反后直接输出到端口B。

3)检测端口A输入的信息的PA7位。

当PA7=1时,端口C输出FFH,否则,输出00H。

请编写程序段,完成上述功能(程序要加注解)。

答案:

1)MOVAL,90H

MOVDX,426H

OUTDX,AL

2)MOVDX,420H

INAL,DX

MOVDX,422H

NOTAL

OUTDX,AL

3)MOVDX,420H;从端口A输入信息

INAL,DX

TESTAL,80H;测试PA7是否为0

MOVAL,0

JZKO;如果为0,输出0

MOVAL,0FFH;否则输出0FFH

KO:

MOVDX,424H;端口C的地址

OUTDX,AL

8253编程题

1设8253A三个计数器的端口地址为100H、101H、102H,控制寄存器端口地址103H。

输入时钟为2MHz,让1号通道周期性的发出方波,其周期为1ms,试编写初化程序段。

答:

要输出脉冲周期为1ms,输出脉冲的频率是

,当输入时钟频率为2MHz时,计数器初值是

使用计数器1,先加载低8位,后加载高8位,设为方式3,二进制计数,控制字是76H。

设控制口的地址是103H,计数器1的地址是101H。

程序段如下:

MOV

DX,103H

MOV

AX,2000

MOV

AL,76H

OUT

DX,AL

OUT

DX,,AL

MOV

AL,AH

MOV

DX,101H

OUT

DX,AL

2.某系统中8253芯片的通道0至通道2和控制端口的地址分别为0FFF0H~0FFF6H,定义通道0工作在方式2,CLK0=2MHz,要求输出OUT0为1KHz的速率波;定义通道1工作方式0,其CLK1输入外部计数事件,每计满1000个向CPU发出中断请求。

试写出8253通道0和通道1的初始化程序。

MOVDX,0FFF6HMOVDX,0FFF6H

MOVAL,35HMOVAL,61H

OUTDX,ALOUTDX,AL

MOVAX,2000HMOVAL,10H

MOVDX,0FFF0HMOVDX,0FFF2H

OUTDX,ALOUTDX,AL

MOVAL,AH

OUTDX,AL

3.若要采用一片8253产生近似为1Hz的对称方波,已知时钟频率为2MHz,8253地址为350-353H,试编写8253初始化程序,并说明通道引脚的连接方法。

答案:

时钟频率为2MHz,要分频至1Hz,分频系数为2000000。

一个8253的计数器分频系数最大为65536,所以必须用两个计数器串联起来工作。

即将2MHz的时钟连接到0#计数器的输入端CLK0,OUT0连接到CLK1,1Hz的对称方波由1#计数器的输出端OUT1输出。

设0#计数器分频系数定为10000,则OUT0输出200Hz波形。

1#计数器分频系数定为200。

0#计数器输出的200Hz波形作为1#计数器的时钟信号,经1#计数器200分频后得到1Hz的波形。

两个计数器均初始化为方式3,初始化程序如下:

MOVDX,353HOUTDX,AL

MOVAL,37HOUTDX,AL

OUTDX,ALINCDX

MOVAL,77HMOVAL,00H

OUTDX,ALOUTDX,AL

SUBDX,3MOVAL,02H

MOVAL,00HOUTDX,AL

 

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2