第三章作业。
8.设堆栈指针sp中的内容为60h,内部ram中30h和31h单元的内容分别为24h和10h。执行下列程序段后,61h,62h,30h,31h,dptr及sp中的内容有何变化?
push 30h ;(sp)=61h, (61h)=24h
push 31h ;(sp)=62h, (62h)=10h
pop dpl ;(dpl)=10h, (sp)=61h,pop dph ;(dph)=24h, (sp)=60h,mov 30h, #00h ;(30h)=00h
mov 31h, #0ffh ;(31h)=ffh
执行后: (61h)=00h (62h)=00h (30h)=00h (31h)=ffh (dptr)=2410h (sp)=60h
10.要完成以下的数据传送,应如何用mcs-51指令实现?
1)r1的内容传送到r0;
mov a, r1
mov r0, a
3)片外ram 20h单元的内容送片内ram 20h单元;
mov r0, #20h
movx a, @r0
mov @r0, a / mov 20h,a
4)片外ram 1000h单元的内容送片内ram20h单元;
mov p2,#10h
mov r0, #00h
movx a, @r0
mov 20h,a
或: mov dptr, #1000h
movx a, @dptr
mov 20h, a
6)rom 2000h单元的内容送片内ram20h单元;
mov a,#00h
mov dptr, #2000h
movc a, @a+dptr
mov 20h, a
7)rom 2000h单元的内容送片外ram20h单元.
mov a,#00h
mov dptr, #2000h
movc a, @a+dptr
mov r0,#20h
movx @r0 ,a
11. 分析以下程序每一条指令执行的结果:
mov a, #25h ;(a)=25h
mov r1, #33h ;(r1)=33h
mov 40h, #1ah ;(40h)=1ah
mov r0, #40h ;(r0)=40h
add a, r1 ;(a)=58h, (r1)=33h, (cy)=0
addc a, @r0 ;(a)=72h, (r0)=40h, (40h)=1ah, (cy)=0
addc a, 40h ;(a)=8ch, (40h)=1ah, (cy)=0
12. 设a=83h,r0=17h,(17h)=34h,执行下面程序段后,(a)=?
anl a, #17h ;1000 0011 * 0001 0111 (a)=0000 0011=03h
orl 17h, a ;0011 0100 + 0000 0011 (17h)=0011 0111=37h, (a)=03h
xrl a, @r0 ;0000 0011⊕0011 0111 (a)=0011 0100=34h
cpl aa)=1100 1011=cbh
14. 两个4位bcd码数相加,被加数和加数分别存于30h,31h和40h,41h单元中(次序为千位/百位在低地址中,十位个位在高地址中),和数放在50h,51h,52h中(52h用于存放最高位的进位),试编写加法程序。
mov a, 31h
add a, 41h
da amov 50h, a
mov a, 30h
addc a, 40h
da amov 51h, a
clr aaddc a, #00h
mov 52h, a
15. 一个16位数(被减数)的高字节存放在30h单元,低字节存放在31h单元,另一个16位数(减数)的高字节存放在32h单元,低字节存放在33h单元,试编写程序完成这两个16位数据的减法运算,差的高8位存放入40h,低8位存放到41h单元,借位位存放在42h。
clr cmov a, 31h
subb a, 33h
mov 41h, a
mov a, 30h
subb a, 32h
mov 40h, a
clr aaddc a, #00h
mov 42h, a
16. 编写程序,查找在内部ram的20h~50h单元中是否有0aah这一数据,若有,则将51h单元置为01h,否则将51h单元清零。
org 0100h
start: mov r0, #1fh
mov 51h, #00h
loop1: inc r0
cjne @r0,#0aah,next
mov 51h, #01h
sjmp done
next: cjne r0,#50h,loop1
done: sjmp $
或: mov r1, #20h
mov r0, #31h
mov 51h,#00h
loop: cjne @r1,#0aah, l1
mov 51h, #01h ;inc 51h
sjmp done
l1: incr1
djnz r0, loop
done: sjmp $
18. 编写一段程序,将外部ram中2000h~2020h单元的内容送入内部ram的30h~50h单元中。
mov r221h
mov r130h
mov dptr, #2000hmov r000h
mov p220h
loop: movx adptrmovx ar0
mov @r1, a
inc dptr
inc r1
djnz r2, loop
19. 编写程序,求出片内ram 40h单元内容中所有“0”的个数,结果存入片内ram 50h单元。
mov 50h, #00h
mov a, 40h
mov r0, #08h
loop: rlc a
jc next
inc 50h
next: djnz r0, loop
mov a, 40h
mov 50h, #00h
mov r1,#08h
anl a, #80h
cjne a, #00h, loop /jnz loop
inc 50h
loop: rl a
djnz r1,loop1
mov a, 40h
mov r0, #08h
mov 50h, #00h
l1: rlc a
mov r1, a
mov a, 50h
addc a, #00h ; 错误:add 50h,c
mov 50h, a
mov a, r1
djnz r0, l1
clr cmov a, #08h
subb a, 50h
mov 50h, a
20. 用布尔指令,求解逻辑方程。(1)psw.5=p1.3·acc.2+b.5·p1.1
mov c, p1.3
anl c, acc.2
mov 01h, c
mov c, b.5
anl c, p1.1
orl c, 01h
mov psw.5, c
单片机原理第三章作业
3 1 mcs 51汇编语言主要伪指令有几条?它们分别具有什么功能?3 2 设 70h 60h,60h 20h,p1口为输入口,当前输入状态为87h,执行下面程序 mov r0,70h mov a,r0 mov r1,a mov b,r1 mov p1,0ffh mov r0,p1 试分析 70h ...
内燃机作业第三章
第三章。名词解释题。1.曲拐 2.扭曲环 3.全浮式活塞销 4 全支承式曲轴 填空题。5.在安装气环时,各个气环的切口应该。6.在安装扭曲环时,应将其内圈切槽向 外圈切槽向 不能装反。7.汽油机常用燃烧室形状有以下几种 半球形燃烧室 楔形燃烧室多球形燃烧室 篷形燃烧室。8.活塞环分为 和气环两种。9...
第三章作业
v s 顺序执行下述两个动作 1.s值加1,即s s 1 2.如果s 0,则该进程继续运行 3.如果s 0,则唤醒等待信号量s阻塞队列中的头一个进程 把阻塞态改为就绪态 执行v操作的进程继续运行。procedure s var s semaphore begin s s 1 if s 0 then ...