《计算机程序设计艺术》学习笔记(一)

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

一, mix

尽管knuth对于mix不満,在第3版和他本人的主页上声明即将更换为mmix,但对于初学者如我而言,结全本书先学学mix似乎更为方便,为了学习tacop后面的内容,了解一下mix看来是必须的步骤。

命令格式一般为

OPADDRESS,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的右边补充。

习题详析:

STZ 1

地址1清0

ENNX 1

rX=-1

STX 1(0:1)

-

1

0

0

0

0

地址1

SLAX 1

-

0

0

0

0

0

-

0

0

0

1

0

rA rX

ENNA 1

rA=-1

INCX 1

-

0

0

0

0

63

rX

ENT1 1

r1=1

SRC 1

-

63

0

0

0

0

-

1

0

0

0

0

rA rX

ADD 1

-

0

0

0

0

0

rA overflow

DEC1 -1

r1=2;

STZ 1

-

0

0

0

0

0

地址1清0

CMP 1

比较rA和地址1,相等,因为正0和负0相等。

MOV -1, 1(1)

将地址1的内容移到地址2(由r2指定)。只移这一个,事后r2=3;

NUM 1

-

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

rA rX

CHAR 1

-

30

30

30

30

30

-

31

30

30

30

30

rA rX

HLT 1

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航