一,
mix
儘管knuth
對於mix
不満,在第
3版和他本人的主頁上宣告即將更換為
mmix
,但對於初學者如我而言,結全本書先學學
mix似乎更為方便,為了學習
tacop
後面的內容,了解一下
mix看來是必須的步驟。
命令格式一般為 op
address,i
(f)
op為命令關鍵字,
address
為位址,
i為變址暫存器,
f為位元組描述。
格式也可能為:
opaddress(f
),這一點
knuth
沒提,但不要求變址時不寫
i部分是很正常的,
knuth
卻沒想到菜鳥如我者卻在開始動不動以為省掉的是
address.
至於有時可以省掉
f 部分是很好理解的,
knuth
有說明。
裝入操作符,(
lda等)儲存操作符(
sta等),注意,
f部分描述的是記憶體位址的而不是暫存器的位元組,這一點我也糊塗了半天。裝的時候順序是從低往高。
算術運算子:
add ,sub ,
mul ,div
只與ra
有關。 與ra和
rx都有關。
位址傳送操作(
enta ,inca ,deca,
等)後面的
address
部分描述的
address
而是數字。
比較操作符:比較的是暫存器和記憶體的值。
move
由單元m
開始移到
r1的內容所指的單元,次數為
f所指定,事後
r1加上
f的值。
num
,將字元**變為數值**,
m被忽略,n1成
1,n2成2
,
char
,不是num
的反運算,在n前加
3,影響ra和
rx.
注意:rx是
ra的右邊補充。
習題詳析:
stz1位址1
清0
ennx1
rx=-1
stx1(0:1)
-
1
0
0
0
0
位址1
slax1
-
0
0
0
0
0
-
0
0
0
1
0
rarx
enna1
ra=-1
incx1
-
0
0
0
0
63
rx
ent11
r1=1
src1
-
63
0
0
0
0
-
1
0
0
0
0
rarx
add1
-
0
0
0
0
0 ra
overflow
dec1-1
r1=2;
stz1
-
0
0
0
0
0
位址1清0
cmp1
比較ra
和位址1,
相等,因為正0和負
0相等。
mov -1, 1(1)
將位址1
的內容移到位址2(由
r2指定)。只移這乙個,事後
r2=3;
num1
-
0
0
0
0
0
-
1
0
0
0
0
10000=2*64*64+28*64+16
-
0
2
28
16
-
1
0
0
0
0
rarx
char1
-
30
30
30
30
30
-
31
30
30
30
30
rarx
hlt1
程式設計藝術學習筆記(1)
序言習題 1 通過一系列的替代,將四個變數的值 a,b,c,d 變為 b,c,d,a 用最少的步驟 開門菜,然而還是有很多值得思考的地方。能幫助人理解計算機對於賦值的操作。通過觀察,可以認為這是乙個a i 賦值給a i 1 的操作。最少的步驟,只需要五步即可。需要乙個t來作輔助,t a,a b,b ...
《Oracle程式設計藝術》學習筆記 23 段
段就是占用儲存空間的資料庫物件,占用儲存空間的每乙個物件最後都會儲存在乙個段中,如表 索引 回滾段等。段的型別 1 表段 2 表分割槽段 table partition 或子分割槽段 subpartition 這種段型別用於分割槽,與表段很相似。分割槽表由乙個或多個分割槽段 table partit...
《Oracle程式設計藝術》學習筆記 23 段
段就是占用儲存空間的資料庫物件,占用儲存空間的每乙個物件最後都會儲存在乙個段中,如表 索引 回滾段等。段的型別 1 表段 2 表分割槽段 table partition 或子分割槽段 subpartition 這種段型別用於分割槽,與表段很相似。分割槽表由乙個或多個分割槽段 table partit...