- [fpamc] 不做伸手党 02/28 14:20
- [kyolxs] windows 下的汇编。 不知道什么时候我才有能力看? 继续前行! 共勉! 07/19 21:10
- [1035802659] 谢了 05/05 14:14
- [游客] 收藏了 04/21 16:09
- [游客] 这就是你丫的人机交互 06/11 20:19
- [maxm] 研究研究你这个dtoc 05/22 20:45
- [游客] 强,得赶紧学习追赶了。 04/29 10:30
- [findufo] 收藏了 04/25 15:39
- [lanchong317] 我粘贴了 04/25 13:25
- [loswer] 建议不要看谭浩强的《C语言程序设计》的书,太垃圾了。语言结构不严谨,代码格式乱七八糟 还是看由C语 04/11 18:34
- [wangping198611] 收到了,呵呵,谢谢。 04/01 09:22
- [mouse] [ wangping198611 发表于 2009-03-23 11:43 ] 03/31 10:28
[2009-03-27 14:07] 汇编指令的英文全称(转载)
如果你想写系统软件,两本入门书籍--谭浩强的《C语言程序设计》和王爽的《汇编语言》是必看的。谭老的C语言已相当成熟,王老师的汇编倒有个小缺陷—指令没有英文全称,或许他认为现在学编程的朋友都不记单词,如同新生代作家看不懂英文原著一般。不过我觉得记住指令的英文全称,就不容易搞混,印象会更深刻,所以我把王爽书中出现的英文缩写的全称罗列出来,以便入门的朋友更好地记住它们。
8086CPU提供以下几大类指令。
一、数据传送指令
比如,mov(move)、push、pop、pushf(push flags)、popf(pop flags)、xchg(exchange)等都是数据传送指令,这些指令实现寄存器和内存、寄存器和寄存器之间的单个数据传送。
二、算术运算指令
比如,add、sub(substract)、adc(add with carry)、sbb(substract with borrow)、inc(increase)、dec(decrease)、cmp(compare)、imul(integer multiplication)、idiv(integer divide)、aaa(ASCII add with adjust)等都是算术运算指令,这些指令实现寄存器和内存中的数据运算。它们的执行结果影响标志寄存器的sf、zf、of、cf、pf、af位。
三、逻辑指令
比如,and、or、not、xor(exclusive or)、test、shl(shift logic left)、shr(shift logic right)、sal(shift arithmetic left)、sar(shift arithmetic right)、rol(rotate left)、ror(rotate right)、rcl(rotate left through carry)、rcr(rotate right through carry)等都是逻辑指令。除了not指令外,它们的执行结果都影响标志寄存器的相关标志位。
四、转移指令
可以修改IP,或同时修改CS和IP的指令统称为转移指令。转移指令分为一下几类。
(1) 无条件转移指令,比如,jmp(jump);
(2) 条件转移指令,比如,jcxz(jump if CX is zero)、je(jump if equal)、jb(jump if below)、ja(jump if above)、jnb(jump if not below)、jna(jump if not above)等;
(3) 循环指令,比如,loop;
(4) 过程,比如,call、ret(return)、retf(return far);
(5) 中断,比如,int(interrupt)、iret(interrupt return)。
五、处理机控制指令
这些指令对标志寄存器或其他处理机状态进行设置,比如,cld(clear direction)、std(set direction)、cli(clear interrupt)、sti(set interrupt)、nop(no operation)、clc(clear carry)、cmc(carry make change)、stc(set carry)、hlt(halt)、wait、esc(escape)、lock等都是处理机控制指令。
六、串处理指令
这些指令对内存中的批量数据进行处理,比如,movsb(move string byte)、movsw(move string word)、cmps(compare string)、scas(scan string)、lods(load string)、stos(store string)等。若要使用这些指令方便地进行批量数据处理,则需要和rep(repeat)、repe(repeat if equal)、repne(repeat if not equal)等前缀指令配合使用。
附:8086CPU寄存器英文全称
1、通用寄存器
AX(accumulator)、BX(base)、CX(count)、DX(data)这些寄存器可以字(16位)或字节(8位)单位形式访问;
SP(stack pointer)、BP(base pointer)、SI(source index)、DI(destination index),这些寄存器只能以字(16位)单位形式访问。
2、专用寄存器
IP(instruction pointer)、SP(stack pointer);;
FLAGS又称PSW(program status word)分为:
① 条件码
OF(overflow)、SF(sign)、ZF(zero)、CF(carry)、AF(auxiliary)、PF(parity)
② 控制标志
DF(direction)
③ 系统标志位
TF(trap)、IF(interrupt)、IOPL(I/O privilege level)
3、段寄存器
CS(code)、DS(data)、SS(stack)、ES(extra)
[ crazyman 发表于 2009-03-27 14:48 ]
嗯,确实有助于记住各个指令!
收藏了。
[ 游客 发表于 2009-03-31 13:06 ]
正想要这个呢,收藏了,谢谢。
[ xcdmqjh 发表于 2009-04-02 15:47 ]
这些东西啊应该是要在没有看书之前就知道的了
[ loswer 发表于 2009-04-11 18:34 ]
建议不要看谭浩强的《C语言程序设计》的书,太垃圾了。语言结构不严谨,代码格式乱七八糟
还是看由C语言的设计者Brian W. Kernighan和Dennis M. Ritchie编写的《The C Programming Language》
想学编程就不要怕看英文
[ lanchong317 发表于 2009-04-25 13:25 ]
我粘贴了
[ findufo 发表于 2009-04-25 15:39 ]
收藏了
[ 游客 发表于 2010-04-21 16:09 ]
收藏了
[ 1035802659 发表于 2010-05-05 14:14 ]
谢了
[ fpamc 发表于 2012-02-28 14:20 ]
不做伸手党