浅谈指令系统---(汇编语言)
一:指令正确格式
数据传输指令:
Mov(符合上述图形):
1.立即数不能在左边
2.两边不能同为段寄存器(DS,CS,ES,SS)
3.两边一样长
(特殊:1.不能修改CS
2.INC WORD PTR[BX + SI] 执行结果是有效值 + 1
3.[]间接寻址中若有2个,必须一个为基址,一个为变址即:mov DH [SI + BP],而且没有mov BX BX + 1这种格式,
)
XHCG(交换):不出现段寄存器(DS,CS,ES,SS)
PUSH, POP:以16字为单位且每次操作SP+= 2
XLAT:只有AL,DS,BX3个
LEA,LDS,LES:为16位通用寄存器 +[内存操作数] 即 LEA DS [SI]是错误的(因为DS为段寄存器)
IN,OUT:只有AL或AX,但是16位需先给DX
寻址方式:立即、直接、寄存器、寄存器间接(基址[BP,BX],变址[SI,DI]、位移[数字])
(寄存器间接寻址中,BP由SS控制位置,BX、SI、DI由DS控制位置,下面会讲到) 即(物理地址PA = DS *16 + 有效地址EA 还是 = SS *16 +有效地址EA)
算术运算指令:
ADC d,s d + s + CF(CF的值来自题目或上面指令)
NEG d 去补
DAA :调整,只调整AL
逻辑运算和移位循环指令:
逻辑运算:OF,CF一定置0
移位循环:超过1,需要给CL
二:具体内容及题型
1.对于物理地址:PA = DS(SS) *16 + EA(逻辑地址)
1.寄存器间接寻址时应注意字长确不确定:INC [SI]; IDIV [BP + DI + 1300H] ;ADD [2400H], 1234H,都是错的
2.MUL 不能为立即数 : MUL 10即是错的。
OF(两个数符号相同,操作后不同则为1,否则为0)
SF(操作后正为0,负为1)
ZF(全0为1,否则为0)
AF(低4位进位或退位为1,否则为0)
PF(低8位偶数个1为1,奇数个为0)
CF(最高位进位或退位为1,否则为0)
AX清0的一些指令(共五条):
1. AND AX 0000H
2. XOR AX AX
3. SUB AX AX
4. MOV AX 0H
5. LEA AX [0000H]
对某些位移动: MOV CL 2
SHL(ROL)
对某些位取反:AND,OR,XOR等
我曾七次鄙视自己的灵魂:
第一次,当它本可进取时,却故作谦卑;
第二次,当它在空虚时,用爱欲来填充;
第三次,在困难和容易之间,它选择了容易;
第四次,它犯了错,却借由别人也会犯错来宽慰自己;
第五次,它自由软弱,却把它认为是生命的坚韧;
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一副;
第七次,它侧身于生活的污泥中,虽不甘心,却又畏首畏尾。