62132151621312125804s
3下列程序中,X、Y和Z为输入的8位无符号二进制数,F为输出的逻辑运算结果。试画出该程序所模拟的组合逻辑电
路。
X
MOVAX
ANLAY
MOVR1A
MOVAY
Y
XRLAZ
CPLA
1
F
ORLAR1
1
MOVFA
FZXYYZ
4分析下列跳转程序,程序中A与30H单元中的数都是符号数,说明当(A(30H))时转向LOOP1,当(A(30H))
时转向LOOP2,当(A(30H))时转向LOOP3。
MOVR0A
R0←A
ANLA80H
JNZNEG
A0,转NEG
4
fMOVA30H
ANLA80HJNZLOOP2
A≥0,30H0,转LOOP2
SJMPCOMP
A≥0,30H≥0,转COMP
NEGMOVA30H
ANLA80H
JZ
LOOP3
A0,30H≥0,转LOOP3
COMPMOVAR0
CJNEA30HNEXT
A≠30H,转NEXT
SJMPLOOP1NEXTJNCLOOP2
A30H,转LOOP1A>30H,转LOOP2
JC
LOOP3
A<30H,转LOOP3
综上分析可知,当A(30H)时转向LOOP1,A(30H)时转向LOOP2,A(30H)时转向LOOP3。
5假定80C51的晶振频率为6MHz,下列程序的执行时间为(30696ms)。已知程序中前2条指令机器周期数为1,后4
条指令机器周期数为2。
MOVR315
1周期
DL1MOVR4255
1周期
DL2MOVP1R3
2周期
DJNZR4DL2
2周期
DJNZR3DL1
2周期
RET
2周期
执行时间:T22255211521230696s
(二)编程题
1把长度为10H的字符串从内部RAM的输入缓冲区i
buf向位于外部RAM的输出缓冲区outbuf传送,一直进行到遇见回车或整个字符串传送完毕,试编程实现。
ORG0030H
MOVR0i
buf
MOVDPTRoutbuf
LOOPLL
MOVR410HMOVAR0CJNEA0DHLLSJMPSTOPMOVXDPTRA
从内部RAM取数是否为回车符CR是回车符,则转STOP,停止传送
不是回车符,则传送到外部RAM
INCR0
INCDPTRDJNZR4LOOP
传送完则循环
STOP
SJMP
2内部RAM从list单元开始存放一正数表,表中之数作无序排列,并以1作结束标志。编程实现找出表中最小数。分析:从list1单元开始判断其中的数是否为1,将比较得到的小数放入累加器A
ORG0030H
LOOP
MOVMOVINC
R0listAR0R0
取第一个正数指向下一个正数
CHK
MOVCJNEJCMOV
30HR0A30HCHKLOOP1A30H
前一个数与后一个数比较前一个数小,则转LOOP1
前一个数大,取后一个数
LOOP1XCHA30H
CJNEA0FFHLOOP判断后一个数是否为1
XCHA30H
取最小数
SJMP
3内部RAM的X,Y单元中各存放一个带符号的数,试编程实现按如下条件进行的运算,并将结果存入Z单元中。若X为正奇数,Z=X+Y;若X为正偶数,Z=X∨Y;若X为负奇数,Z=X∧Y;
5
f若X为负偶数,Z=XY。分析:正数:第7位为0,负数:第7位为1;奇数:第0位为1,偶数:第0位r