首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >LC-3: JSR不修改PC

LC-3: JSR不修改PC
EN

Stack Overflow用户
提问于 2017-07-11 14:34:41
回答 1查看 924关注 0票数 0

我在LC-3程序集中工作,我和JSR有一个问题.它没有修改PC,跳到标签上,而是将前一台PC写到R7,它只是继续到下一条指令。以下是相关章节:

代码语言:javascript
运行
复制
....
NXTNODE     LDR     R2, R2, #0  ; get next node
BRz DONE    ; now that node is loaded in R2, compare the first and last name

AND R6, R6, #0
AND R3, R3, #0
AND R3, R4, #0  ; copy search term pointer to R3
ADD R6, R2, #0  ; copy node pointer to R6
ADD R6, R6, #3  ; point to last name
AND R5, R5, #0
ADD R5, R5, #1  ; init loop counter

OUTP    JSR     COMPARE         ; uses R6 to compare first and last name to search term.
                                ; if they match, continue (R0 = 1). Otherwise, go to NXTNODE.
ADD R0, R0, #-1
BRnp    NXTNODE         ; no match, don't print

LDR R0, R6, #0  ; there was a match. Load first name to R0      

TRAP    x22
LEA R0, SPACE
TRAP    x22
....

(压痕有点乱七八糟。)

COMPARE位于另一个位置,在这一行中:

代码语言:javascript
运行
复制
COMPARE ST  R1, ST1     ; R6 --> current node

指令从未移动到COMPARE标签。模拟器只是经过它,进入下一条指令。

它像以前预期的那样工作,但我一定改变了一些东西,我不知道那是什么,也不知道为什么它不起作用。任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-11 16:57:34

模拟器只是经过它,进入下一条指令。

只是一个想法:

COMPARE标签上的代码执行了吗?

或者--不同地问:JSR指令后的寄存器是否具有从子例程返回后所期望的值?

如果是的话,模拟器可能会进入“跨越式”模式,你可能知道从高级语言,也。

在这种模式下,函数(高级语言)或子例程(汇编程序)不是逐步执行的,而是在函数或子例程完成后执行并停止调试器。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45037587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档