1.简介
MIX是The Art of Computer Programming书中所用的汇编语言。
寄存器:有9个寄存器,A、X、J、I1、I2、I3、I4、I5、I6。I1~I6为变址寄存器。参见后面的图3。
MIX中一个字由5个字节和一位符号位组成。
MIX中的字符包括A-Z的大写字母,0-9的数字和部分特殊符号。
指令格式(这里是说机器指令):
| 0 | 1 | 2 | 3 | 4 | 5 |
| 地 址 | index | mod | 操作码 |
这是定长指令格式,所有指令都是6字节,其中第字节为符号,
0 1 2号字节共同组成地址。
我觉得不用太关心机器指令,不过书上说了很多。
在实例1中具体说明。
2.实例讲解
实例1,代码在第一卷1.3.2节140页,算法在1.2.10节93页。
代码:
X EQU 1000
ORIG 3000
START STJ EXIT
INIT ENT3 0,1
JMP CHANGEM
LOOP CMPA X,3
JGE *+3
CHANGEM ENT2 0,3
LDA X,3
DEC3 1
J3P LOOP
EXIT JMP *
END START第一个例子,我尽量说详细。这是一个求最大值的例子,求数组x[1]...x[n]的最大值m,储存到寄存器A
先说初始化,书上省略了的,寄存器I1为数组长度n。寄存器I3用于存k,寄存器I2存j。
n是提前给了初值的,k和j是运行的时候再初始化的。
ORIG 3000
表示程序是从3000的地址开始运行的,
X EQU 1000
表示数据是从1000号单元开始存放的,这里省略了数据的初始化。
即提前在1000、1001、1002...1000+N号单元存放了一组数据,这个程序是要找出其中的最大值。
STJ EXIT
STJ就是store rJ,即储存寄存器J到EXIT所在的地址,J即jump,是一个跳转用的寄存器,
EXIT是个标签,怎么能存到标签呢,实际是存到那个机器指令的地址字段,如图1: