计组你密码的
计算机组成原理实验笔记
指令
汇编程序按照机器语言顺序执行
机器指令
$P 0 0 2 0
$P 0000 0000 0010 0000
$P 代表是机器指令
- 运算类指令 (直接寻址)
- 算数运算
- 逻辑运算
- 位移运算
单字节指令:ADD(加) AND(与) INC(自增) SUB(减) OR(或) RR(右环移)
此处结构均存入RD
- 控制转移类指令
单字节指令:HLT (停机)
双字节指令:JMP BZC
- 数据传送类指令
单字节指令:MOV
双字节指令:IN OUT LDI LAD STA
单字节指令
| 0000 | 00 | 00 |
|---|---|---|
| OP-CODE | RS | RD |
OP-CODE: 操作码
RS: 源寄存器
RD: 目的寄存器
RS/RD取00-11对应寄存器R0-R3
双字节指令
| 0000 | 00 | 00 | 0000 0000 |
|---|---|---|---|
| OP-CODE | RS | RD | P/data |
IN / OUT: P
P为IO端口
IN: [P] -> RD
OUT: RS -> [P]
LDI: data
属于立即寻址,data为立即数
D->RD
| 0000 | 00 | 00 | 0000 0000 |
|---|---|---|---|
| OP-CODE | M | RD | D |
M是寻址模式
| M | E | 寻址方式 |
|---|---|---|
| 00 | E = D | 直接寻址 |
| 01 | E = (D) | 间接寻址 |
| 10 | E = (R1) + D | R1变址寻址 |
| 11 | E = (PC) + D | 相对寻址 |
LAD: 作用: E->RD
STA: 作用: RD->E
JMP: 作用: E->PC
BZC: 作用: FC=1|FZ=1 E->PC
微指令
$M 00 000001
$M 代表是微指令
你几把又是干啥的???
表格
| OP-CODE | 指令名称 |
|---|---|
| 0000 | ADD |
| 0001 | AND |
| 0010 | IN |
| 0011 | OUT |
| 0100 | MOV |
| 0101 | HALT |
| 0110 | LDI |
| 0111 | INC |
| 1000 | SUB |
| 1001 | OR |
| 1010 | RR |
| 1011 | - |
| 1100 | LAD |
| 1101 | STA |
| 1110 | JMP |
| 1111 | BZC |
实例分析
$P 00 20
; 0010 0000 ; IN 将输入00端口的数据存入R0
$P 01 00
; 0000 0000 ; ADD R0+R0->R0 将R0翻倍
$P 02 61
$P 03 0F
; 0110 0001 0F ; LDI 0F->R1
$P 04 14
; 0001 0100 ; AND R1与R0->R0 得到R0低四位(因为前面将R1设定为0F了)
$P 05 61
$P 06 00
; 0110 0001 ; LDI 00->R1
$P 07 F0
$P 08 16
; 1111 0000 ; BZC 00为直接寻址 如果FC=1|FZ=1 则16->PC
$P 09 62
$P 0A 60
; 0110 0010 ; LDI 60->R2 读入数据始地址
$P 0B CB
$P 0C 00
; 1100 1011 ; LAD 10表示R1变址寻址(E=R1+00=R1) 11表示RD=R3
$P 0D 0D
; 0000 1101 ; ADD R3+R1->R1
$P 0E 72
; 0111 0010 ; INC R2++ 循环地址计数加一(对应P09)
$P 0F 63
$P 10 01
; 0110 0011 ; LDI 01->R3 装入比较值
$P 11 8C
; 1000 1100 ; SUB R0-R3->R0 (让R0--)
$P 12 F0
$P 13 16
; 1111 0000 ; BZC 如果FZ=1(R0为0) 16->PC
$P 14 E0
$P 15 0B
; 1110 0000 ; JMP 0B->PC 循环到前面
$P 16 D1
$P 17 70
; 1101 0001 ; STA R1->[70] 把R1的数据存储到地址为70到内存里
$P 18 34
$P 19 40
; 0011 0100 ; R1数据输出到40OUT端口
$P 1A E0 ; JMP START 跳转至START
$P 1B 00
$P 1C 50 ; HLT 停机
; 这里可以选择用哪种 反复执行OR停止

浙公网安备 33010602011771号