微机原理编程题.docx
《微机原理编程题.docx》由会员分享,可在线阅读,更多相关《微机原理编程题.docx(8页珍藏版)》请在冰豆网上搜索。
微机原理编程题
微机原理编程题
1.分支程序设计
①.编写一段程序,已知BUF1单元中有一带符号字节数据X,BUF2中有一带符号字节数据Y,根据以下函数关系编写程序求Z的值,结果存入RESULT单元。
Z=|X-Y|;
DATASEGMENT
BUF1DB05H
BUF2DB02H
RESULTDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,BUF1
MOVBL,BUF2
SUBAL,BL
JNCGREAT
NEGAL
GREAT:
MOVRESULT,AL
EXIT:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
②.编写一段程序,已知BUF单元中有一无符号字节数据X,假设为8,根据以下函数关系编写程序求Y的值,结果存入RESULT单元。
Z=5XX<10,X-5X>=10;
DATASEGMENT
BUFDB8
RESULTDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,BUF
CMPAL,10
JAEGRE
MOVBL,AL
ADDAL,AL
ADDAL,AL
ADDAL,BL
JMPDONE
GRE:
SUBAL,5
DONE:
MOVRESULT,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
③.在内存单元BUF中存放一个带符号字节数据X,假定为-2,试根据以下函数关系编写程序求Y的值,结果存入RESULT单元。
Y=1X>0,0X=0,-1X<0;
DATASEGMENT
BUFDB-2
RESULTDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,BUF
CMPAL,0
JGEL1
MOVAL,-1
JMPL3
L1:
JZL2
MOVAL,1
JMPL3
L2:
MOVAL,0
L3:
MOVRESULT,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
2.N个数中求最大值、最小值.假定N=10,已知原始数据存放在BUF开始的内存单元中,将结果存入MAX,MIN内存单元中。
DATASEGMENT
BUFDB3,5,7,8,5,3,9,7,13,1
COUNTEQU$-BUF
MAXDB?
MINDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,COUNT-1
MOVAL,BUF
MOVMAX,AL
MOVMIN,AL
LEASI,BUF
AGAIN:
MOVAL,[SI+1]
CMPAL,MIN
JGES1
MOVMIN,AL
S1:
CMPAL,MAX
JLES2
MOVMAX,AL
S2:
INCSI
LOOPAGAIN
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
3.编写程序求1+2+3+……+N<100时最大的N值,将N值送NUM单元中,同时将1+2+3+……+N的和送到SUM单元中。
DATASEGMENT
NUMDB?
SUMDB?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVAL,0
MOVBL,0
AGAIN:
INCBL
ADDAL,BL
CMPAL,100
JBAGAIN
SUBAL,BL
DECBL
MOVNUM,BL
MOVSUM,AL
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
4.统计字符,正数,负数,零的个数。
①.若自STRING单元开始存放一个字符串,以'$'结尾,试编写程序,
统计字符串的长度,并将结果存入COUNT单元。
DATASEGMENT
STRINGDB'abcdefg$'
COUNTDW?
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,STRING
MOVCX,0
NEXT:
MOVAL,[SI]
CMPAL,'$'
JZDONE
INCCX
INCSI
JMPNEXT
DONE:
MOVCOUNT,CX
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
②.自BUF单元开始存放10个带符号字节数据,将其中的正数、负数和零选出来,并统计其个数,分别存入PLUS、MINUS和ZERO单元中。
DATASEGMENT
BUFDB5,-2,0,-1,4,0,-4,8,0,-7
PLUSDB?
MINUSDB?
ZERODB?
DATAENDS
CODESEGMENT
ASSUMECS:
DATA,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
LEASI,BUF
MOVCX,10
AGAIN:
MOVAL,[BX]
INCBX
ANDAL,AL
JSM1
JZM2
INCPLUS
JMPNEXT
M1:
INCMINUS
JMPNEXT
M2:
INCZERO
JMPNEXT
NEXT:
LOOPAGAIN
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
5.求压缩BCD码的和。
已知从BUF1和BUF2单元开始,存放两个各为10个字节的BCD数,求这两个数的和,并将结果存入BUF3单元中。
DATASEGMENT
BUF1DB01H,01H,01H,01H,01H,01H,01H,01H,01H,01H
BUF2DB03H,03H,03H,03H,03H,03H,03H,03H,03H,03H
BUF3DB11DUP(?
)
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVCX,10
LEASI,BUF1
LEADI,BUF2
LEABX,BUF3
AGAIN:
MOVAL,[SI]
ADCAL,[DI]
DAA
MOV[BX],AL
INCSI
INCDI
INCBX
LOOPAGAIN
ADCAH,0
MOV[BX],AH
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
6.8255编程题:
(课后实验)
8255工作于方式0,此时PA、PB、PC均为可独立输入/输出的并行口。
8255的各寄存器对应的口地址为:
PA口:
200H,PB口:
202H,PC口:
204H,控制口:
206H。
要求8255工作于方式0,PA口设置为输入,PC口设置为输出。
DATASEGMENT
C8255EQU206H
P8255AEQU200H
P8255CEQU204H
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVDX,C8255;设置为A口输入,C口输出
MOVAL,90H
OUTDX,AL
BG:
MOVDX,P8255A;将A口状态从C口输出
INAL,DX
MOVDX,P8255C
OUTDX,AL
JMPBG
CODEENDS
ENDSTART