計算機指令設計格式
例題:
?
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.
?
?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?