這是程式:
STZ 1
ENNX 1
STX 1(0:1)
SLAX 1
ENNA 1
INCX 1
ENT1 1
SRC 1
ADD 1
DEC1 -1
STZ 1
CMPA 1
MOVE -1,1(1)
NUM 1
CHAR 1
HLT 1
到目前為止我所知道的:
- STZ 1 將下一條指令設定為 NOP,因此可以忽略第二條指令
- 根據答案 - ADD 函式應該觸發溢位。
- ADD 函式應該將記憶體 1 的內容添加到暫存器 A
使用第一個命令將存盤器 1 設定為零 - ADD 功能應該簡單地將零添加到暫存器 A。
如果 Mem1 設定為零,這如何將溢位切換設定為打開?
REF:計算機編程藝術第 1 卷第 142 頁問題 18
uj5u.com熱心網友回復:
該程式似乎使用位置 1 作為資料,因此代碼本身應該位于該位置之后的某個位置,就像在黑暗中的刺一樣,例如從 0x10 開始。如果代碼從 0(或 1)開始,那么它將覆寫自身,產生不希望的結果。
較舊的計算機,如 PDP-8,會在 0 處啟動程式計數器,但也會像這樣使用低位資料(在零頁上),因此您會看到程式在 0 處包含第一條指令,即跳轉到實際代碼開始,然后是資料,然后是實際代碼。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/430137.html
上一篇:為什么堆疊幀按24位元組對齊?
