计算机指令设计格式
例题:
1.设相对寻址的转移指令占3个字节,第一字节为操作码,第二,第三字节为相对偏移量,
数据在存储器以低地址为字地址的存放方式。
每当CPU从存储器取出一个字节时候,自动完成(PC)+1-PC
(1)PC当前值为240,要求转移到290(十进制),转移指令的第二,第三字节机器代码:
取出三字节后PC为243;
相对偏移量为290-243=47;
即二进制数00101111;转换为16进制补码;2FH;
由于是低字节存储,第二字节2FH,第三字节00H;两字节即为二进制数0000000000101111
(2)PC当前值为240(十进制),要求转移到200(十进制),转移指令的第二,第三字节机器代码:
取出三字节后PC为243
200-243=-43;
二进制数原码为00101011
补码为:11010100+1=11010101
即D5H(H后缀表示十六进制)
从上到下:栈地址由高地址到低地址。
SP指针一直指向栈顶,入栈后SP=SP-t,出栈SP=SP+t;t取值与编址方式相关,按字编址,t为1;
按字节编址,t为字长位数/8;
例题:
双字长直接寻址的子程序调用指令,第一个字为操作码和地址码,第二个字为地址码5000H,假设PC值为2000H,SP内容为0100好,栈顶内容为2746H,存储器按字节编址,进栈操作是先执行SP=SP-t;后存入数据
求CALL指令被执行后与子程序返回后
PC,SP和栈顶的内容?CALL指令占4个字节;
(1)CALL执行后
PC为5000H
SP为SP-2=00FEH(16进制为4位,一位为二进制的两位,二进制共16位,16/8=2字节)
栈顶的内容为2004H;
(2)子程序返回后
PC为2004H,(2000-2003存放CALL指令)
SP为0100H;(出栈)
栈顶内容为2746H
例题:
某机字长16位,存储器寻址空间128位字,变址时候偏移量为-64~+63,16个通用寄存器都可以作为变址寄存器,设计一套指令格式,满足下列寻址要求
(1)直接寻址的二地址指令3条
直接寻址是地址直接作为操作数,
128位字,即2^7,即有7位,两地址有14位,剩下2位为操作码地址,00,01,11作为3条指令的操作码,剩下的11用来区分其他;
(2)变址寻址的一地址指令6条
变址寻址即选择变址寄存器作存储操作数,16个通用寄存器都可以作为变址寄存器占4位(2^4=16),变址时候偏移量为-64~+63占7位,剩下五位作为操作码,操作码前两位是11(与(1)区分),6条即11000-11101,
(3)寄存器寻址的二地址指令8条
地址占7位,寄存器寻址即4位区分16个寄存器,两个寄存器地址,共8位,剩下8位是操作码。操作码前5位11110与之前的区分((2)中操作码是11000-11101,),剩下的3位实现8条指令,
(4)直接寻址的一地址指令12条
7位地址位实现一地址128位存储空间字。剩下9位,比(3)指令位拓展了一位,与(3)中的剩下8位指令位结合,组成16位操作码,以11111作为特征位,剩下的0000-1011,一共12位,
(5)零地址指令32条
操作数没有,后5位实现32.