Casl汇编语言辅导(上)

Casl汇编语言辅导(上),第1张

Casl汇编语言辅导(上),第2张

一、Casl汇编语言语法介绍


 学习一个汇编语言需要掌握3个要点:CPU 的可编程寄存器结构、寻址方式及指令系统、伪指令。
1、COMETCPU 的可编程寄存器
 COMETCPU 字长 16 位,采用从左到右的编号。bit0 在最左边(位),bit15 在最右边(最低位)
 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
 1)16 位通用寄存器五个:
 GR0、GR1、GR2、GR3、GR4
 通用功能:各种算术逻辑运算
 特殊功能:除 GR0 外都可作变址寄存器(地址指针)XR,GR0 可看成累加器。
 GR4 兼作堆栈指针(SP)
 2)指令计数器 PC 一个(16位)
 存放正在执行的那条指令的第 1 个字的地址(一条指令占二个字),指令结束时,PC 中存放下一条指令的地址 (一般为原指令地址 +2 )。
 3)状态寄存器 FR 一个(二位)
 运算结果 FR0 FR1
 大于 0 0
 等于 0 1
 小于 1 0
 可以把 FR0 看成 SF(符号位),FR1 看成 ZF(零位位)
 除了算术逻辑运算指令(包括移位指令)外,LEA 指令也会影响 FR
2、符号指令写法与寻址方式
 OP GR,ADR[,XR]
 其中 OP 为操作码;GR 为五个通用寄存器 GR0~GR4 之一;ADR 为一个 16 位的地址码;XR 为四个变址寄存器 GR1~GR4 之一,[ ]表示可以省略。
 1)直接寻址:当 [,XR] 省略时,为直接寻址。
 2)变址寻址:有效地址 E = ADR +(XR),当 ADR = 0 时,为寄存器间接寻址。
 3)立即数寻址:Casl 没有立即数寻址。但在 LEA 指令中,当 [,XR] 省略时,可作立即数传送。没有立即数运算指令。
 4)寄存器寻址:Casl 也没有寄存器寻址(对源操作数)。但 LEA 指令当 ADR = 0 时,可作寄存器寻址(只用 于数据传送)。
3、Casl指令系统
 1)取数指令 LD:内存→寄存器
 LD GR,ADR[,XR]
 2)存数指令 ST:寄存器→内存
 ST GR,ADR[,XR]
 3)加法 ADD、减法 SUB、逻辑与 AND、逻辑或OR、逻辑异或 EOR指令:
 ADD ┐
 SUB │
 AND ├ GR,ADR[,XR]
 OR │
 EOR ┘
 内存 OP 寄存器→寄存器
 4)算术比较 CPA:
 两个带符号数比较,结果不回送,只影响标志位。
 CPA GR,ADR[,XR]
 5)逻辑比较 CPL:两个无符号数比较,结果不回送,只影响标志位。
 CPL GR,ADR[,XR]
 6)算术左移 SLA、算术右移 SRA:把操作数看成带符号数。对寄存器操作数进行移位(GR 的第 0 位——符号位不变。右移时空出的其余位补与第 0 位相同的 1 或 0 ;左移时空出的位补 0 ),位数由有效地址 E 决定。
 SLA ┐ GR,ADR[,XR]
 SRA ┘
 7)逻辑左移 SLL、逻辑右移 SRL:把操作数看成无符号数。对寄存器操作数进行移位(不管左右移,GR 空出的位补 0 ),位数由有效地址 E 决定。
 SLL ┐ GR,ADR[,XR]
 SRL ┘
 8)取有效地址指令LEA:E→寄存器
 LEA GR,ADR[,XR]
 该指令有几个特殊用途:
 【例1】LEA GR0,41H 把立即数 41H 送给 GR0
 【例2】LEA GR0,0,GR1 把寄存器 GR1 的内容送给 GR0
 【例3】LEA GR1,1,GR1 寄存器 GR1 的内容加 1(相当于 8086 汇编中的 INC 指令)
 【例4】LEA GR1,-1,GR1 寄存器 GR1 的内容减 1(相当 8086 汇编中的 DEC 指令)
 【例5】LEA GR1,N,GR1 寄存器 GR1 的内容加 N(相当于立即数加法)
 【例6】LEA GR1,-N,GR1 寄存器 GR1 的内容减 N(相当于立即数减法)
 9)无条件转移指令JMP与条件转移指令JPZ(不小于转)、JMI(小于转)、JNZ(不等于转)、JZE(等于转)
 JMP ┐
 JPZ │
 JMI ├ ADR[,XR]
 JNZ │
 JZE ┘
 ●当地址码中缺 [XR] 时,所有转移指令为直接转移( ADR 即为转移地址)
 当地址码中有 [XR] 时,所有转移指令为间接相对接转移
 ●JPZ 与 JMI 根据符号位 FR0 作为判断条件
 JNZ 与 JZE 根据零位位 FR1 作为判断条件
 10)进栈 PUSH 与出栈 POP:
 (1)进栈指令 PUSH:
 PUSH ADR[,XR]
 (SP)-1→SP,E→(SP)
 (2)出栈指令 POP:
 POP GR
 ((SP))→GR,(SP)+1→SP
 注意:出栈指令的目的寄存器是 GR0~GR4,而进栈指令的源操作数不包括 GR0。
 11)子程序调用CALL与返回 RET指令
 (1)子程序调用指令 CALL:
 CALL ADR[,XR]
 (SP)-1→SP,(PC)+2→(SP),E→(PC)
 (2)子程序返回指令 RET:
 RET
 ((SP))→PC,(SP)+1→SP

位律师回复
DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » Casl汇编语言辅导(上)

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情