-
2-1 設 a=0,執行以下兩個命令後,a 的內容是否相同是合理的。
movc a,@a+dptr
movx a,@dptr
答:A的內容不可能相同,因為MOVC定址的是程式儲存器,而MOVX是資料儲存器,兩者定址的儲存器不同,所以得到的源運算元當然不可能相同(如果相同,幾率小於100萬)。
2-2 指示如何在以下每個命令中定址運算元。
指令 目標運算元的定址 源運算元的定址add a,40h 暫存器定址 直接定址。
推送 acc 暫存器定址。
MOV B,20H 暫存器定址 直接定址。
ANL P1,現在有 35H 暫存器定址位址。
MOV @r1,PSW 暫存器間接定址暫存器定址。
MOVC A,@a+DPTR 暫存器定址基址加上可變位址定址。
MOVX @dptr,暫存器間接定址暫存器定址。
2-4 假設累加器 A 的內容為 30 小時,執行以下命令:
1000h: movc a,@a+pc
,將程式儲存器 (1031) 單元的內容傳送到累加器 A。
老闆,你的話題太多了,我忘不了,能給你弄這麼多積分,實在不容易。
-
設sp=32h,片上RAM的30H和32H的單元內容分別為20H、23H和01H執行以下命令後,堆疊指標 sp=? dph=? dpl=? a=?
pop dph (32h) -dph, sp - 1 --sp,結果為:dph = 01h, sp = 31h。
pop dpl (31h) -dpl, sp - 1 --sp,其結果是:dpl = 23h, sp = 30h。
pop acc (30h) -acc, sp - 1 --sp,結果為:acc = 20h, sp = 2fh。
最終:SP = 2FH,DPH = 01H,DPL = 23H,A = 20H。
-
lcall 是乙個 strip 子程式呼叫指令,所以指令執行後,會給 pc 分配如下位址 1080h,pc=1080h
1000h(原PC)+3=1003h,所以堆疊的內容是03h,10h,sp的值是66h,因為它被壓了2個位元組
-
當執行呼叫命令時,返回的入口位址將受到保護,即在 lcall 儲存在 2345h 後為 3456h: sp=。 (sp,72)=23h,(sp-1,71)=48h。 ,gmwowe