微机-例题总和_第1页
微机-例题总和_第2页
微机-例题总和_第3页
微机-例题总和_第4页
微机-例题总和_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

例1设内存DATA单元存放一个无符号字节数据0B5H,编写程序将其拆成两位十六进制数,并存入HEX和HEX+1单元的低4位。HEX存放高位十六进制数,HEX+1单元存放低位十六进制数

DSEGSEGMENTDATADBB5HHEXDB?,?

DSEGENDSCSEGSEGMENTASSUMECS:CSEG,DS:DSEGSTART:MOVAX,DSEGMOVDS,AXMOVAL,DATAMOVAH,ALANDAL,0F0H

MOVCL,4SHRAL,CLMOVHEX,AL

ANDAH,0FHMOVHEX+1,AH MOVAH,4CHINT21HCSEGENDSENDSTARTMOVCL,4SHRAL,CLMOVHEX,AL

ANDAH,0FHMOVHEX+1,AH MOVAH,4CHINT21HCSEGENDSENDSTARTDATASEGMENTHEXDB0ABH,37HDATDB?DATAENDS

CODESEGMENTASSUMECS:CODE,DS:DATAMOVAH,4CHINT21HCODEENDSENDSTARTSTART:MOVAX,DATAMOVDS,AXMOVAL,HEXANDAL,0FHMOVCL,4SHLAL,CLMOVBL,HEX+1ANDBL,0FHADDAL,BLMOVDAT,AL例2设HEX、HEX+1单元的低四位分别存放一位十六进制数,编制程序将其合并为一个字节,并存入DAT单元。其中HEX单元中数据作为高位局部。例3在地址偏移量为3000H的ALF单元开始,存放一个压缩的BCD码,将其转化为ASCII码,存放在接下来的BLF开始的单元中。DATASEGMENTORG3000HALFDB89HBLFDB2DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,ALFMOVBL,ALMOVCL,4SHRAL,CLORAL,30HMOVBLF,ALANDBL,0FHORBL,30HMOVBLF+1,BL

MOVAH,4CHINT21HCODEENDSENDSTARTDATASEGMENTORG1000HDAT1DB-1,2,3,-9…COUNTDWNMNDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATACODEENDSENDSTARTSTART:MOVAX,DATAMOVDS,AXMOVAH,4CHINT21HMOVSI,OFFSETDAT1MOVCX,COUNTMOVBL,[SI]INCSIDECCXCMPBL,[SI]JLNEXTXCHGBL,[SI]NEXT:INCSIDECCXJNZAGAINMOVMN,BLAGAIN:例4:求N个带符号字节中的最小数例5、从内存ADR单元开始,连续存放出1000个学生的某门课成绩.统计90~100,70~89,60~69,60以下各段人数.解:设CX:计数器,SI:地址指针.定义:S5,S6,S7,S9单元存放各分数段的人数.AL:待查分数.DATA SEGMENTADR DB 68,59,85,96,……76COUNT DW 1000S5 DW 0S6 DW0S7 DW 0S9 DW 0DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV SI,OFFSETADR MOV CX,COUNTAGAIN:MOV AL,[SI] CMP AL,60 JL NEXT1 CMP AL,70 JL NEXT2 CMP AL,90 JGE NEXT3 INC WORDPTRS6JMPSTOPNEXT1:INC WORDPTRS9 JMP STOPNEXT2:INC WORDPTRS7 JMP STOPNEXT3:INC WORDPTRS5STOP:INC SI DEC CX JNZ AGAIN MOV AH,4CH INT 21HCODE ENDS END STARTADR DB 250DUP(68,59,85,96)思考:如果多加一个分数段“80~90〞呢?例6计算X+20(0<X≤8〕Y=5X-2(8<X<15〕X(其它)设X为单字节带符号整数,且存在ARGX单元,计算结果Y存入RLT单元分析:求X绝对值,假设X为正数,那么是其本身,假设X为负数,那么将其取补,也就是连同其符号位在内一起取补,原来的负数变成了正数,即X的绝对值,5X可用X*2*2+X的算法求得DATA SEGMENTARGX DB 7RLT DW ?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX XOR AX,AX MOV AL,ARGX

CMP AL,0

JG NEXT1

NEG AL JMP STOPNEXT1:CMP AL,15 JL NEXT2 JMP STOPNEXT3:SALAL,1JNCGO1INCAHGO1:SALAL,1JNCGO2INCAHGO2:ADDAL,ARGX ADC AH,0 SUB AX,2STOP:MOV RLT,AX MOV AH,4CH INT 21HCODE ENDS END START

NEXT2:CMP AL,8 JG NEXT3

ADD AL,20ADCAH,0

JMP STOPX+20〔0<x<=8〕5X-2(8<x<15)︳x︳(其它)Y=MOVBL,5IMULBL例7:编制程序统计AX存放器中有多少位置“1〞,将置“1〞的位数送往CL寄存器中。DATASEGMENTDATDW30CONUTDB16DAT1DB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCL,0MOVAX,DATMOVCH,COUNTAGAIN:ROLAX,1;RORJNCNEXT

INCCLNEXT:DECCHJNZAGAINMOVDAT1,CL

MOVAH,4CHINT21HCODEENDSENDSTART思考:如果不想改变AX存放器内容怎么办?例8、编程:求解1+2+3+…+N<100的最大N值

DATASEGMENTNDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXXORAL,ALMOVBL,1AGAIN:ADDAL,BL

INCBL

CMPAL,100

JBAGAIN

DECBL

DECBLMOVN,BLMOVAH,ACHINT21HCODEENDSENDSTART;段的定义;给DS赋段基址

;XOR占用的指令周期短;返回DOS例9:在BLOCK开始的内存单元中有100个16位带符号数,请寻找出最大值并送MAX单元。DECCX;比较次数减一JNZAGAIN;未完,继续MOVBX,OFFSETBLOCK;设置块指针MOVAX,[BX];取一数送AXMOVCX,99;设置比较次数AGAIN:CMPAX,[BX];比较JGNEXT;AX>[BX]转NEXTMOVAX,[BX];小于,那么大数送AXNEXT:MOVMAX,AX;完,那么存大数HLTINCBX;修改指针INCBX回忆以前学习的如何求得100个16位带符号数得最大值?DSEG SEGMENT

DATA DB -1,3,-5…………

COUNT DW 50

RLT DW 0

DSEG ENDSCODE SEGMENT ASSUME CS:CODE,DS:DSEGSTART:MOV AX,DSEG MOV DS,AX MOV SI,OFFSETDATA MOV CX,COUNT MOV DX,0AGAIN:MOV AL,[SI]

CMP AL,0 JGE PLUS

INC DX方法2:AND AL,ALJNS PLUSPLUS:INC SI DEC CX JNZ AGAIN MOV RLT,DX MOV AH,4CH INT 21H CODE ENDSEND START例10统计由DATA单元开始的字节数据块中负元素的个数。数据个数在COUNT单元,统计结果存入RLT单元。〔两种方法〕思考:还有其他指令可以吗?DATASEGMENTORG0500HDATDB1,4,6,9,…,10RLTDW?COUNTDW10DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETDATMOVCX,COUNTXORAX,AXADDAL,[SI]ADCAH,0INCSIDECCXJNZAGAINAGAIN:MOVRLT,AXMOVAH,4CHINT21HCODEENDSENDSTART用字操作指令

XORAX,AXXORDX,DXAGAIN:MOVAL,[SI]

ADDDX,AX…

MOVRLT,DX例11.求10个无符号字节数的和〔用8位数的运算指令〕,结果用两个字节表示。〔0500H开始,结果050AH和050BH,高位在050BH中〕DATASEGMENTORG0100HDAT1DB11H,13H,24H,…34HDAT2DB22H,23H,78H,…14HRLTDB10dup(?)COUNTDW10DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETDAT1MOVDI,OFFSETDAT2MOVBX,OFFSETRLTMOVCX,COUNTCLCMOVAL,[SI]ADCAL,[DI]DAA

MOV[BX],ALINCSIINCDIINCBXDECCXJNZAGAINMOVAH,4CHINT21HCODEENDSENDSTARTAGAIN:例12.0100H和010AH单元,各存放一个10字节的BCD数〔组合,地位地址存放低位字节〕,求这两个数的和,且把和放在0114H开始的存储单元例13:假设有一输入的ASCII码串STRING,长度在COUNT单元中,要把其中的数码取出,转换为未组合的BCD码,放在另一存储区BUFFER中,并统计数码串的长度。(不讲)DATA SEGMENTSTRING DB ‘AB*98*CD543*’COUNT DW 12BUFFERDB12DUP(?)CONDB?DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV CX,COUNT MOV BL,0 MOV SI,OFFSETSTRING MOV DI,OFFSETBUFFERAGAIN:MOV AL,[SI] INC SI

INCDI INC BLNEXT: DEC CX JNZ AGAINMOVCON,BL

MOV AH,4CH INT 21HCODE ENDS END STARTCMP AL,30HJB NEXTCMP AL,39HJA NEXTAND AL,0FHMOV [DI],AL

例14:编制程序统计AX存放器中有多少位置“1〞,将置“1〞的位数送往CL寄存器中。DATASEGMENTDATDW30DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVCL,0MOVAX,DATAGAIN:CMPAX,0JZNEXT

SHLAX,1

JNCAGAININCCLJMPAGAIN

NEXT:MOVAH,4CHINT21HCODEENDSENDSTART思考:如果不想改变AX存放器内容怎么办?DATA SEGMENTORG 1000HDAT1 DB 20DUP(1,2,3,4,5)COUNT DW 100ORG 2000HDAT2 DB 100DUP(?)DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX

MOV ES,AX

方法2AGAIN: MOVSB DEC CX JNZ AGAIN方法3REPMOVSB

MOV AH,4CH INT 21HCODE ENDS END START例15.串操作:自1000H单元开始有一个100个数的字节数据块,要把她们传送到2000H开始的单元中,用3种方法:不用串;用单个传送的串操作;用数据块成组传送〔REP〕。MOV CX,COUNT LEA SI,DAT1 LEA DI,DAT2AGAIN:MOVAL,[SI] MOV[DI],AL INC SI INCDI DEC CX JNZ AGAINDATASEGMENTBUFDW8970H,0FA59H,1123HDATAENDS

CODESEGMENTASSUMECS:CODE,DS:DATAMOVAH,4CHINT21HCODEENDSENDSTARTSTART:MOVAX,DATAMOVDS,AXMOVAX,BUFCMPAX,BUF+1JGENEXTXCHGAX,BUF+1NEXT:例16.从BUF开始,有三个不同的16位带符号数,编制程序,将较大的数存放在AX中,较小的数放在BX中。5X-7(0<X<8)3X(8<=X<15)0(其他)例17、计算Y=设X为字节数据,在DAT单元存放,计算结果并存入MEM单元.DATASEGMENTDATDB13HMEMDB?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,DATMOVBL,AL

CMPAL,0JLENEXTCMPAL,15JGENEXTCMPAL,8JLNEXT2SHLAL,1

ADDAL,BLJMPSTOPNEXT:MOVAL,0

JMPSTOPNEXT2:MOVCL,2SHLAL,CLADDAL,BLSUBAL,7STOP:MOVMEM,ALMOVAH,4CHINT21HCODEENDSENDSTART

MULBL例1:将2片6264(2764)连接到8086系统总线上,其内存地址为70000H~73FFFH。读写偶地址时A0=0;读写奇地址时,BHE=0;读以偶地址开始的一个字时,A0和BHE同时为低。6264D0~D7CSOEWEVccGND6264逻辑关系图A0~A1270000H73FFFH全0全101110000111001地址范围A13~A1A19A18A17A16A15A14A0A16A15A14A18IO/MCBAG1138

A19Y4G2AG2BA17&BHEA0或或例2:用6264(8K×8RAM)二片,建立08000H~0BFFFH的的内存区。A19A18A17A16A15A14A13~A1A01000010全0~全10/1分析:1、片数=2片=16K/8k2、数据线:8根

3、片内寻址:8K=213,A12~A0连接A13~A1。

4、每片的地址范围如下,74S138译码5、控制线:WR、RD,IO/MABCG2AG2BG1Y274LS138或A0~A12D0~D7CSWEOE6264(2)A0~A12D0~D7CSWEOE6264(1)A1~A13D0~D7A14A15A16WRRDA18~A198086CPUIO/MD8~D15A17BHEA0或或D3~D0A11~A0OEWECS例3:以下图为一SRAM芯片,用该芯片扩展成一个8K×8的存储器。〔1〕写出该芯片的存储容量,共需多少这样的芯片才能满足上述要求?〔2〕假设该芯片与8086CPU相连,起始地址为02000H,且地址连续,请用全译码法画出满足要求的连接图。分析:〔1〕A11~A0一共12根地址线,字数为212=4K。连接A12~A1D0~D3一共4根数据线,位数为4。容量4K×4。8K×8/4K×4=4片。〔2〕地址02000H开始,一共8K×8,213,到03FFFH结束。与8086相连,那么这4片为一组。〔2〕地址02000H开始,到03FFFH结束。与8086相连,那么这4片为一组。选择的芯片是4K的,所以片内寻址局部为A1~A12。A19A18A17A16A15A14A13A12~A1A010000001全0~全10/1A17A16A19A18IO/MA15A14A13CBAG1138

G2AG2B或或Y1BHEA0或或例4.利用2K×8位的静态RAM6116构成8086的从F1000H~F1FFFH的内存,请用全译码法画出6116与8086CPU系统总线的连接图。6116A0~A10D0~D7CEOEWEVccGND分析:6116芯片如右图所示。2K=211,地址线A0~A10,8位的数据线D0~D7。构成8086的从F1000H~F1FFFH的内存,容量为00000H~00FFFH,=212×8=4K×8.所以:4K×8/2K×8=2片。〔2〕地址F1000H开始,一共8K×8,213,到F1FFFH结束。与8086相连,那么这2片为一组。选择的芯片是2K的,所以片内寻址局部为A1~A11。111110A19A18A17A16A150/1全0~全1001A0A11~A1A14A13A12A15M/IOCBAA14A13A12G1138

G2AG2BY1BHEA0或或&A19A18A17A16习题1、对由8K×8位,RAM组成的存贮器系统,假设某组的起始地址为08000H,那么其末地址为H。分析:8K×8:片内寻址:13条地址线A19~

A16

A15A14A13A12A11A10A9A8

A7A6A5A4A3A2A1A000001000

0000000000000000100111111111111109FFFH习题2:图为SRAM芯片,利用该芯片构成8086的从E8000H~EFFFFH的内存.

1.该芯片的存储容量多少?需要几片才能满足要求?

2.画出片选信号/CS产生的电路.

SRAMD0~D7CSOEWEVccGNDA0~A13分析:芯片如右图所示。地址线A0~A13,14根地址线,214=16K,8位的数据线D0~D7。所以容量为16K×8。构成8086的从E8000H~EFFFFH的内存,容量为00000H~07FFFH,=215×8=32K×8.所以:32K×8/16K×8=2片。〔2〕地址E8000H开始,到EFFFFH结束。与8086相连,那么这2片为一组。选择的芯片是16K的,所以片内寻址局部为A1~A14。111A19A180/1全0~全1101A0A14~A1A17A16A15A18M/IOY5BHEA0或或CBAA17A16A15G1138

G2AG2BA19例1:系统中有一片8259A,中断请求信号用电平触发方式,要用ICW4,中断类型码为60H~67H,用特殊完全嵌套方式,无缓冲,采用中断自动结束方式。设端口地址为20H,21H。1100×11××A0D7D6D5D4D3D2D1D001不写ICW4写ICW401级联,写ICW3单片,不写ICW3=0(不用)8088/8086不用标志位0=边沿触发方式1=电平触发方式ICW1:1BHD7D6D5D4D3D2D1D001A00011000无效中断类型号的高5位ICW2与中断类型号高5位一致,低3位16位机的时候无效。ICW2:60HICW4110/1101000A0D7D6D5D4D3D2D1D00=全嵌套方式1=特殊全嵌套方式=非缓冲方式,此时若用级联,由SP/EN确定主从设备。=缓冲方式,本机为从机=缓冲方式,本机为主机0101101选用8位机选用16位机MOVAL,1BHOUT20H,AL;写ICW101非自动EOI方式自动结束中断方式ICW4:13HMOVAL,60HOUT21H,AL;写ICW2MOVAL,13HOUT21H,AL;写ICW4例2:系统中有一片8259A,中断请求信号用电平触发方式,要用ICW4,中断类型码为60H~67H,用特殊完全嵌套方式,无缓冲,采用中断自动结束方式。设端口地址为93H,94H。ICW1:1BH需要注意的就是ICW1的A0要求是0,其它A0要求是1。ICW2:60HMOVAL,1BHOUT94H,AL;写ICW1ICW4:13HMOVAL,60HOUT93H,AL;写ICW2MOVAL,13HOUT93H,AL;写ICW4例3:单片8259A,完全嵌套方式。8259A的IR0~IR7中断类型号依此为08H~0FH,端口地址为20H~21H,中断采用边沿触发方式,缓冲器方式,发EOI中断结束,全嵌套优先级管理的工作方式。ICW1:00010011BICW2:00001000BMOVAL,13HOUT20H,AL;写ICW1ICW4:00001101BMOVAL,80HOUT21H,AL;写ICW2MOVAL,0DHOUT21H,AL;写ICW4例4:8086系统采用级联方式,主8259A的中断类型码从30H开始,端口地址为20H、21H,中采用边沿触发方式。从片8259A的INT接主片的IR7,从片中断类型码从40H开始,端口地址为22H、23H,采用边沿触发方式,主从片均不需要ICW4。MOVAL,00010000BMOVDX,20HOUTDX,AL;写ICW1MOVAL,30HINCDXOUTDX,AL;写ICW2MOVAL,80H;OUTDX,AL;写ICW3〔1〕主8259A初始化〔2〕从片初始化0100010A0D7D6D5D4D3D2D1D00011×××××A0D7D6D5D4D3D2D1D011主片从片MOVAL,00010000BMOVDX,22HOUTDX,AL;写ICW1MOVAL,40HINCDXOUTDX,AL;写ICW2MOVAL,07H;OUTDX,AL;写ICW3填空:1、单片8259可管理〔〕级可屏蔽中断。4片级联最多可管理〔〕级。最大可扩展〔〕级。298642、8259的A0接地址总线A1时,假设其中一个端口地址为82H,另一个端口地址为〔〕H;假设某外设的中断类型码为86H,那么该中断源应和8259的中断请求存放器IRR的〔〕输入端相连。80IR63、16位微机系统中,有一片8259构成中断控制系统。设在片内A0=0时端口的地址为PA,在片内A0=1时的端口地址为PB。MOVDX,PAMOVAL,00011011B;ICW1OUTDX,ALMOVDX,PBMOVAL,10001000B;ICW2OUTDX,ALMOVAL,00001101B;ICW4OUTDX,ALMOVAL,11000010B;OCW1OUTDX,AL(1)、中断结束的方式为〔〕。〔2〕、中断级IR2的中断类型码为〔〕。〔3〕、IR1和IR2上有效的中断请求信号在IF=1时能否引起CPU的中断?非自动结束〔ICW4的D1位0〕〔ICW2〕8AHIR1不能引起CPU中断,IR2能引起CPU中断。〔OCW1的D1和D2,是0不屏蔽,开放;是1屏蔽,禁止。〕4、假设中断向量表中地址为0040H单元中存放的是1234H,0042H单元中存放的是5679H,试问:〔1〕这些单元对于的中断类型号是什么?〔2〕该中断效劳程序的起始地址是什么?分析:中断向量表地址=中断类型号×4可以用二进制表示的中断类型号左移2位。反过来,中断类型号=用二进制表示的中断向量地址逻辑右移2位。〔1〕由0040H=01000000B右移后=00010000B=10H=16D〔2〕中断向量即中断效劳程序的起始地址。逻辑地址CS:IP=5678H:1234H中断类型号N,取〔4N,4N+1〕IP取〔4N+2,4N+3〕CS5、对于8259可编程控制器,当其单片使用时可同时接收〔①8〕外设的中断请求;当级联使用时主片的〔②IRi〕应与从片的〔③INT〕连接。①A.8个B.12个C.4个D.16个②

A.SP/ENB.CSC.INTAD.IRi(i=0~7)③A.INTB.INTRC.CSD.CASi(i=0~2)6、3片8259级联,最多可以接〔〕个可屏蔽中断源。〔8-从片个数〕+从片个数×8=〔8-2〕+2×8=22个228259主片IR7……IR0INT8259从片IR7……IR0INT8259从片IR7……IR0INT7、某一可编程中断控制器8259A的IR3接在一个输入设备的中断请求输出线上,其中断类型号为83H,问该片的中断类型号的范围是多少?分析:中断类型号高5位都相同,所以是80H开始,后3位由所接的IRi决定。所以范围是连续8位:80H~87H。8、某中断控制器8259A,初始化命令字ICW2内容为23H,问该片的中断类型号的范围是多少?分析:一局部取自初始化命令字ICW2的高5位,另一局部来自IRi编号。D7D6D5D4D3D2D1D0ICW2的高5位000……IR0111……IR7…20H~27H例1.设某系统中有两片8255芯片,由74LS138译码器产生两个芯片的片选信号。要求:第一片8255〔J1〕的A口工作在方式0输出,B口工作在方式0输入,C口高4位为输出,低4位为输入。第二片8255〔J2〕的A口工作在方式0输入,B口工作在方式1输出,C口高4位输出,C口低4位为B口控制信号。〔1〕试指出两片8255芯片各自的端口地址;〔2〕试写出两片8255芯片各自的方式控制字;〔3〕试写出两片8255芯片各自的初始化程序。解:〔1〕根据译码电路图,可分析出:J1的A,B,C和控制口的地址分别为0138H,013AH,013CH,013EH。J2的A,B,C和控制口的地址分别为0130H,0132H,0134H,0136H。〔2〕按照8255方式控制字的格式,两片8255的控制字分别为J1:10000011BJ2:10010100B或10010101B第一片8255〔J1〕的A口工作在方式0输出,B口工作在方式0输入,C口高4位为输出,低4位为输入。第二片8255〔J2〕的A口工作在方式0输入,B口工作在方式1输出,C口高4位输出,C口低4位为B口控制信号。〔3〕J1的初始化程序为MOVDX,013EHMOVAL,83HOUTDX,ALJ2的初始化程序为MOVDX,0136HMOVAL,94H〔或95H〕OUTDX,AL例2.8255的A0,A1管脚和8086CPU的A0,A1两根地址线分别直接相连,8255的端口地址是唯一的,且8255的控制口地址为0047H,A口工作于方式1输入,B口工作于方式0输出,C口除了联络信号线外其余的作为输出。〔1〕写出8255A口,B口,C口的端口地址。〔2〕写出8255的初始化程序。〔1〕A口地址为0044H,B口地址为0045H,C口地址为0046H。〔2〕8255的初始化程序。MOVDX,0047HMOVAL,10110000BOUTDX,AL例3.假设8255的A0和CPU的A0直接相连,8255的A1和CPU的A1直接相连,8255的C口地址为0C2H,答复以下问题:〔1〕写出8255的其它端口地址。〔2〕要使8255的PC6置1,下面程序是否正确,假设不正确,写出正确的程序。MOVDX,0C2HMOVAL,00001101BOUTDX,AL〔3〕假设要求A口、B口均工作于方式0,A口输入,B口输出,C口输出,编写初始化程序。〔1〕写出8255的A口地址为0C0H,B口地址为0C1H,控制口地址为0C3H。〔2〕不正确MOVDX,0C3HMOVAL,00001101BOUTDX,AL〔3〕MOVDX,0C3HMOVAL,10010000BOUTDX,AL2〕要使8255的PC6置1,下面程序是否正确,假设不正确,写出正确的程序。MOVDX,0C2HMOVAL,00001101BOUTDX,AL〔3〕假设要求A口、B口均工作于方式0,A口输入,B口输出,C口输出,编写初始化程序。例3.假设8255的A0和CPU的A0直接相连,8255的A1和CPU的A1直接相连,8255的C口地址为0C2H,例4.某微机控制系统中扩展一片8255作为并行口,如下图。其中A口为方式1输入,以中断方式与CPU交换数据,中断类型号为0FH;B口为方式0输出,C口的普通I/O线作为输入。请编写8255的初始化程序,并设置A口的中断矢量。解:从图上可得到8255的一组地址为00B0H,00B2H,00B4H,00B6H,或另一组地址为00B8H,00BAH,00BCH,00BEH。初始化程序:MOVAL,10111001B;方式控制字MOVDX,00B6HOUTDX,ALMOVAL,00001001B

;PC4置1,开发A口的输入中断请求OUTDX,AL;中断矢量设置程序MOVAX,0MOVDS,AXMOVDI,0FH×4;送中断向量表的偏移地址MOVAX,OFFSETSERV;SERV为中断效劳程序MOV[DI],AX;将效劳程序的入口地址IP存入INCDIINCDIMOVAX,SEGSERV;MOV[DI],AX;将效劳程序的入口地址CS存入思考:如果给B口设置中断向量呢?MOVAL,00000101B;PC2置1,开发B口的输入中断请求OUTDX,AL;中断矢量设置程序例:用一片8255,PA0~PA7接8盏灯,循环亮,每盏灯亮1秒。端口地址为0F8H~0FBH,延时程序为Delay。分析:A口输出低电平时,灯才会亮。×+5V

MOV AL,80HOUT 0FBH,ALMOV AL,0FFHOUT 0F8H,ALMOV AL,0FEHAGAIN:OUT0F8H,ALCALL DELAYROR AL,1JMP AGAIN控制字:1000000B=80H所有灯全灭:A口写入0FFH=11111111b,后依次亮;第一盏灯亮,其余灭;每盏灯依次亮思考:假设灯依次灭呢?

MOV AL,80HOUT 0FBH,ALMOV AL,00HOUT 0F8H,ALMOV AL,01HAGAIN:OUT0F8H,ALCALL DELAYROR AL,1JMP AGAIN思考题:假设用2片8255的每片3个口都接灯,另一片的控制口地址为0F7H。那么共有48盏灯,控制字仍为80HMOV AL,80HOUT 0FBH,ALOUT 0F7H,ALMOV AL,0FFHOUT 0F8H,ALOUT 0F9H,ALOUT 0FAH,ALOUT 0F4H,ALOUT 0F5H,ALOUT 0F6H,AL………………例:由8255A口读入2位BCD码,将其位置互换〔83→38〕后由B口输出,8255控制口地址为97H,试编制初始化程序。MOV AL,90HOUT 97H,ALIN AL,94HMOV CL,4ROL AL,CLOUT 95H,AL控制字:10010000B例:如下图,使8255A口为工作方式0,并作为输出,B口为工作方式0,作为输入,用一组开关信号接入B口,A口输出线接至一组发光二极管。完成用开关控制发光二极管亮灭的初始化程序LED7PA7PA6PA0PB7PB6PB0LED6LED0+5VS7S6S0.....................D7D0~RDWRCSRDWR-DBG1G2AG2BCBAY0Y1Y7...8255AA2A3A4A1A0A1A074LS1388088CPUIO/MA6A7A5A7A6A5A4A3A2A1A0010000XX端口地址40H~43H控制字:10000010B=82H

MOV AL,82HOUT 43H,ALAGAIN:INAL,41HOUT 40H,ALJMP AGAIN

例4利用8255作为CPU与打印机的接口,硬件如下图,B口工作于方式0输出。假设要打印字符‘A’,试编写此接口程序〔STB为选通信号,BUSY为忙信号〕。〔未用的地址线置0〕分析接口图可知A口,B口,C口,控制口地址分别为90H,94H,98H,9CH,接口程序如下:

MOVAL,81H;10000001BOUT9CH,ALW:INAL,98HTESTAL,08HJNZWMOVAL,‘A’OUT90H,ALMOVAL,0EHOUT9CH,ALINCALOUT9CH,AL;从PC7发一个负脉冲,将打印字符锁存在打印机例1:某8253端口地址为F8H~FBH,欲用通道0以方式1,按BCD计数,计数值为5080。1.确定通道控制字;2.计数值的低8位为80;3.计数值的高8位为50。00110011初始化程序为:MOVAL,33HOUT0FBH,ALMOVAL,80HOUT0F8H,ALMOVAL,50HOUT0F8H,AL在计数过程中,8253读计数器现行值的方法:〔将计数值存入内部锁存器〕MOVAL,43H;计数器1的锁存命令OUT0FBH,AL;写入控制存放器INAL,0F9H;读低8位MOVCL,AL;存入CL中INAL,0F9H;读高8位MOVCH,AL;存入CH中01000011例2:系统中8253芯片的通道0至通道2和控制端口的地址分别为0FFF0H,0FFF2H,0FFF4H和0FFF6H。1、通道0工作在方式2,CLK0=2MHZ,要求输出OUT0=1KHZ的速率波;2、通道1工作在方式0,其CLK1输入外部计数事件,每计满1000个向CPU发出中断请求。编写8253通道0和通道1的初始化程序。2、8253通道1的初始化程序为MOVAL,01100001BMOVDX,0FFF6HOUTDX,ALMOVAL,10HMOVDX,0FFF2HOUTDX,AL1、N=2M/1K=2000=2000H(BCD)2、N=1000=1000H(BCD)1、8253通道0的初始化程序为MOVAL,00100101BMOVDX,0FFF6HOUTDX,ALMOVAL,20HMOVDX,0FFF0HOUTDX,AL例3:编程,将8253计数器0设置为方式1,计数初值为3000,计数器1设置为方式2,计数初值为2021H,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论