当前位置:文档之家› C语言指令汇总

C语言指令汇总

C语言指令汇总
C语言指令汇总

●一、数据传送类指令

指令格式功能简述字节数周期

MOV A,Rn 寄存器送累加器1 1

MOV Rn,A 累加器送寄存器1 1

MOV A ,@Ri 内部RAM单元送累加器1 1

MOV @Ri ,A 累加器送内部RAM单元1 1

MOV A ,#data 立即数送累加器2 1

MOV A ,direct 直接寻址单元送累加器2 1

MOV direct ,A 累加器送直接寻址单元2 1

MOV Rn,#data 立即数送寄存器2 1

MOV direct ,#data 立即数送直接寻址单元3 2

MOV @Ri ,#data 立即数送内部RAM单元2 1

MOVX A ,@DPTR 外部RAM单元送累加器(16位地址) 1 2 MOVX @DPTR ,A 累加器送外部RAM单元(16位地址) 1 2 MOVC A ,@A+DPTR 查表数据送累加器(DPTR为基址) 1 2 MOVC A ,@A+PC 查表数据送累加器(PC为基址) 1 2

XCH A ,Rn 累加器与寄存器交换1 1

XCH A ,@Ri 累加器与内部RAM单元交换1 1

XCHD A ,direct 累加器与直接寻址单元交换2 1

XCHD A ,@Ri 累加器与内部RAM单元低4位交换1 1

SWAP A 累加器高4位与低4位交换1 1

POP direct 栈顶弹出指令直接寻址单元2 2

PUSH direct 直接寻址单元压入栈顶2 2

●算术运算类指令

ADD A,Rn 累加器加寄存器1 1

ADD A,@Ri 累加器加内部RAM单元1 1

ADD A,direct 累加器加直接寻址单元2 1

ADD A,#data 累加器加立即数2 1

ADDC A,Rn 累加器加寄存器和进位标志1 1

ADDC A,@Ri 累加器加内部RAM单元和进位标志1 1

ADDC A,#data 累加器加立即数和进位标志2 1

ADDC A,direct 累加器加直接寻址单元和进位标志2 1

INC A 累加器加1 1 1 INC Rn 寄存器加1 1 1

INC direct 直接寻址单元加1 2 1

INC @Ri 内部RAM单元加1 1 1

INC DPTR 数据指针加1 1 2

DA A 十进制调整1 1

SUBB A,Rn 累加器减寄存器和进位标志1 1

SUBB A,@Ri 累加器减内部RAM单元和进位标志1 1

SUBB A,#data 累加器减立即数和进位标志2 1

SUBB A,direct 累加器减直接寻址单元和进位标志2 1 DEC A 累加器减1 1 1

DEC Rn 寄存器减1 1 1

DEC @Ri 内部RAM单元减1 1 1

DEC direct 直接寻址单元减1 2 1

MUL AB 累加器乘寄存器B 1 4

DIV AB 累加器除以寄存器B 1 4

●逻辑运算类指令

ANLA,Rn 累加器与寄存器1 1

ANL A,@Ri 累加器与内部RAM单元1 1

ANL A,#data 累加器与立即数2 1

ANL A,direct 累加器与直接寻址单元2 1

ANL direct,A 直接寻址单元与累加器2 1

ANL direct,#data 直接寻址单元与立即数3 1

ORL A,Rn 累加器或寄存器1 1

ORL A,@Ri 累加器或内部RAM单元1 1

ORL A,#data 累加器或立即数2 1

ORL A,direct 累加器或直接寻址单元2 1

ORL direct,A 直接寻址单元或累加器2 1

ORL direct,#data 直接寻址单元或立即数3 1

XRL A,Rn 累加器异或寄存器1 1

XRL A,@Ri 累加器异或内部RAM单元1 1

XRL A,#data 累加器异或立即数2 1

XRL A,direct 累加器异或直接寻址单元2 1

XRL direct,A 直接寻址单元异或累加器2 1

XRL direct,#data 直接寻址单元异或立即数3 2

RL A 累加器左循环移位1 1

RLC A 累加器连进位标志左循环移位1 1

RR A 累加器右循环移位1 1

RRC A 累加器连进位标志右循环移位1 1

CPL A 累加器取反1 1 CLR A 累加器清零1 1

●控制转移类指令类

ACCALL addr11 2KB范围内绝对调用2 2

AJMP addr11 2KB范围内绝对转移2 2

LCALL addr16 2KB范围内长调用3 2

LJMP addr16 2KB范围内长转移3 2

SJMP rel 相对短转移2 2

JMP @A+DPTR 相对长转移1 2

RET 子程序返回1 2

RET1 中断返回1 2

JZ rel 累加器为零转移2 2

JNZ rel 累加器非零转移2 2

CJNE A ,#data ,rel 累加器与立即数不等转移3 2

CJNE A ,direct ,rel 累加器与直接寻址单元不等转移3 2 CJNE Rn,#data ,rel 寄存器与立即数不等转移3 2

CJNE @Ri ,#data,rel RAM单元与立即数不等转移3 2

DJNZ Rn ,rel 寄存器减1不为零转移2 2

DJNZ direct ,rel 直接寻址单元减1不为零转移3 2

NOP 空操作1 1

布尔操作类指令

MOV C,bit 直接寻址位送C 2 1

MOV bit,C C送直接寻址位2 1 CLR C C清零1 1

CLR bit 直接寻址位清零2 1

CPL C C取反1 1

CPL bit 直接寻址位取反2 1

SETB C C置位1 1

SETB bit 直接寻址位置位2 1

ANL C,bit C逻辑与直接寻址位2 2

ANL C,/bit C逻辑与直接寻址位的反2 2

ORL C,bit C逻辑或直接寻址位2 2

ORL C,/bit C逻辑或直接寻址位的反2 2

JC rel C为1转移2 2 JNC rel C为零转移2 2

JB bit,rel 直接寻址位为1转移3 2

JNB bit,rel 直接寻址为0转移

汇编语言入门

汇编语言入门教程 对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ……)。但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP、WINRAR…依次压迫,嘿嘿!)教程。大言不惭的说,看通本文,你完全可以“不经意”间在前辈或是后生卖弄一下DEBUG,很有成就感的,试试看!那么――这个接下来呢?――Here we go!(阅读时看不懂不要紧,下文必有分解) 因为汇编是通过CPU和内存跟硬件对话的,所以我们不得不先了解一下CPU和内存:(关于数的进制问题在此不提) CPU是可以执行电脑所有算术╱逻辑运算与基本I/O 控制功能的一块芯片。一种汇编语言只能用于特定的CPU。也就是说,不同的CPU其汇编语言的指令语法亦不相同。个人电脑由1981年推出至今,其CPU发展过程为:8086→80286→80386→80486→PENTIUM →……,还有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不过多了些指令(如多能奔腾的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。为确保汇编程序可以适用于各种机型,所以推荐使用8086汇编语言,其兼容性最佳。本文所提均为8086汇编语言。寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。BP(Base Pointer):基址指针寄存器,可用作SS 的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。还有一个标志寄存器FR(Flag Register),有九个有意义的标志,将在下文用到时详细说明。 内存是电脑运作中的关键部分,也是电脑在工作中储存信息的地方。内存组织有许多可存放

(完整word版)汇编语言常用指令大全,推荐文档

MOV指令为双操作数指令,两个操作数中必须有一个是寄存器. MOV DST , SRC // Byte / Word 执行操作: dst = src 1.目的数可以是通用寄存器, 存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令: 堆栈操作是以“后进先出”的方式进行数据操作. PUSH SRC //Word 入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器. 入栈时高位字节先入栈,低位字节后入栈. POP DST //Word 出栈操作数除不允许用立即数和CS段寄存器外, 可以为通用寄存器,段寄存器和存储器. 执行POP SS指令后,堆栈区在存储区的位置要改变. 执行POP SP 指令后,栈顶的位置要改变. XCHG(eXCHanG)交换指令: 将两操作数值交换. XCHG OPR1, OPR2 //Byte/Word 执行操作: Tmp=OPR1 OPR1=OPR2 OPR2=Tmp 1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 3.存储器与存储器之间不能交换数据. XLAT(TRANSLATE)换码指令: 把一种代码转换为另一种代码. XLAT (OPR 可选) //Byte 执行操作: AL=(BX+AL) 指令执行时只使用预先已存入BX中的表格首地址,执行后,AL中内容则是所要转换的代码. LEA(Load Effective Address) 有效地址传送寄存器指令 LEA REG , SRC //指令把源操作数SRC的有效地址送到指定的寄存器中. 执行操作: REG = EAsrc 注: SRC只能是各种寻址方式的存储器操作数,REG只能是16位寄存器 MOV BX , OFFSET OPER_ONE 等价于LEA BX , OPER_ONE MOV SP , [BX] //将BX间接寻址的相继的二个存储单元的内容送入SP中 LEA SP , [BX] //将BX的内容作为存储器有效地址送入SP中 LDS(Load DS with pointer)指针送寄存器和DS指令 LDS REG , SRC //常指定SI寄存器。 执行操作: REG=(SRC), DS=(SRC+2) //将SRC指出的前二个存储单元的内容送入指令中指定的寄存器中,后二个存储单元送入DS段寄存器中。

常见的易语言源码大集合

常见易语言源码 使用命令: 写到文件(取运行目录() +“1.skn”, #皮肤) 易皮肤_载入皮肤(取运行目录() +“1.skn”, ) 切记<易皮肤_载入皮肤>要用到(易语言皮肤支持库2.0.rar) (易语言皮肤支持库2.0.rar)路径:F:\易语言\软件\易语言皮肤支持库2[1].0.zip 注意:#皮肤)这个地方的名称一定要和你添加的资源名称一样否则不能使用 加载皮肤(7) 加载Aero特效() 这个一定要加33个皮肤模块 设置窗口透明度的命令: 设置窗口透明度(取窗口句柄(), 200) 注意:运行()EXE文件的就直接输入路径!如果是记事本那么就在前面加一个+文本文档的路径 范例:这个运行文件------.运行(“D:\123.exe”, 假, ) 这个运行文档------运行(“notepad.exe D:\123.txt”, 假, ) DLL注入: https://www.doczj.com/doc/0810555627.html,/help/zlsc/dll/dll.htm 编辑框内容不被复制: 鼠标右键被按下 返回(假)

编辑框按下某键() 如果(键代码=#CTRJ键=真) 返回(假) .版本2 .子程序__启动窗口_创建完毕 时钟1.时钟周期=1000 .子程序_时钟1_周期事件 标签1.标题=到文本(到数值(标签1.标题) +1) 进度条: .版本2 .程序集窗口程序集1 .子程序_按钮1_被单击 时钟1.时钟周期=10 .子程序_时钟1_周期事件 进度条1.位置=进度条1.位置+1 .如果真(进度条1.位置=100) 载入(窗口1, , 真) 时钟1.时钟周期=0 进度条1.位置=0 .如果真结束

易语言sql命令格式

打开2007数据库 外部数据库1.打开(“ODBC;DSN=MS Access Database;DBQ=”+取运行目录() +“\数据库.accdb;Driver={Microsoft Access Driver (*.mdb, *.accdb)};;DriverId=25;FIL=MS Access;MaxBufferSize=2048;PageTimeout=5;PWD=”, , 真) 易语言对ACCESS数据库 学习使用数据库,难免要使用SQL语句。外部数据库使用SQL语句可以快速地完成对数据库的种种操作,如:查询、修改、插入记录、删除记录等。至于更多的,比如:创建表、删除表、加密数据等等,等我们能够比较熟练地掌握数据库的操作再研究。 一、基本命令格式 1、查询记录 基本格式:select 字段名from 表名where 条件 例如:要查询“员工表"中“张三"的信息,可以这么写:“select * from 员工表where 姓名='张三'"。这里,“员工表"是要查询的表的名称,“姓名"是字段名称。 如果要查询的是张三的电话呢?就得这么写:“select 电话from 员工表where 姓名='张三'"。“电话"也是该表中的字段。 如果要查询整个表的信息,就不需要加“where"。比如,要查询“员工表"中所有员工的全部信息,就可以这么写:“select * from 员工表"。 2、删除记录 基本格式:delete from 表名where 条件 例如:要删除“学生表"中“成绩"小于50的学生名字,可以这么写:“delete from 学生表where 成绩<50" 如果不加条件,就会删除该表中所有记录,该表就变成一个没有记录的空表,以后还可以向表中添加记录。本命令与删除表“drop table"不同,“drop table"删除的是被操作的表,删除后,整个表都不存在,也就不可以再添加记录了。 3、添加记录 基本格式:insert into 表名(字段1,字段2,字段3) values (字段1的值,字段2的值,字段3的值) 本命令是往指定的表中添加记录。要注意,“表名"后面括号中是被操作的字段名称,“values"后面括号中是对应的字段值,不要弄错了位置的先后顺序。还有,本命令不可以跟“where",因为你要添加的记录在表中根本没有,所以也就不可以有什么条件了。 4、修改记录 基本格式:update 表名set 欲修改的字段名1=该字段的新值,欲修改的字段名2=该字段的新值where 条件 该命令是修改表中已经存在的记录数据。如果不加“where"条件,就会把所有指定的字段都改成新值。 比如:要修改“员工表"中“张三"的工资为1500,应该这么写:“update 员工表set 工资=1500 where 姓名='张三'"。 二、易语言命令操作数据库 在易语言中,对外部数据库,比如ACCESS的操作,有如下方法: 一个是用“外部数据库",另一个是用“数据库连接"和“记录集"。前一种是我这段时间正在学习的,操作起来比较方便。后一种我还没有用过,不敢多讲。不过,我觉得记录集就象一张表格,只是这表格是看不见的,是动态的。在这里,我只说一下“外部数据库"。 1、查询操作 基本命令:外部数据库控件名称.查询(SQL命令语句)

(完整word版)汇编语言指令集合-吐血整理,推荐文档

8086/8088指令系统记忆表 数据寄存器分为: AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据. BH&BL=BX(base):基址寄存器,常用于地址索引; CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器. DH&DL=DX(data):数据寄存器,常用于数据传递。他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。 另一组是指针寄存器和变址寄存器,包括: SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置; BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置; SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针; DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。 指令指针IP(Instruction Pointer) 标志寄存器FR(Flag Register) OF(overflow flag) DF(direction flag) CF(carrier flag) PF(parity flag) AF(auxiliary flag) ZF(zero flag) SF(sign flag) IF(interrupt flag) TF(trap flag) 段寄存器(Segment Register) 为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址: CS(Code Segment):代码段寄存器; DS(Data Segment):数据段寄存器; SS(Stack Segment):堆栈段寄存器;

易语言中文编程,从入门到精通【菜鸟基础教程】

绍兴县教研室试点教材汉语编程工具易语言

易语言教程――初级版 目录 目录.......................................................................................................................... - 2 - 第一部分易语言入门.................................................................................................... - 3 - 第一课走进“易”世界........................................................................................ - 3 - 一、打开“易语言”设计窗口 ........................................................................ - 3 - 二、认识“易语言”........................................................................................ - 3 - 三、第一个易程序............................................................................................ - 5 - 四、小结............................................................................................................ - 6 - 第二课简单的人机交互........................................................................................ - 7 - 一、第一个交互程序........................................................................................ - 7 - 二、小结............................................................................................................ - 9 - 第三课按钮与标签的综合运用 .......................................................................... - 10 - 第四课图文并茂.................................................................................................. - 12 - 第五课看看计算机的计算能力 .......................................................................... - 14 - 第六课让世界丰富多彩...................................................................................... - 16 - 第七课顺序程序结构.......................................................................................... - 18 - 第八课猜数(选择程序结构) .......................................................................... - 21 - 第九课多分支控制结构语句 .............................................................................. - 25 - 第十课练习.......................................................................................................... - 27 - 一、选择题:.................................................................................................. - 27 - 二、编程题:.................................................................................................. - 27 - 第十一课循环程序结构...................................................................................... - 29 - 第十二课循环程序结构练习 .............................................................................. - 33 - 一、选择题...................................................................................................... - 33 - 二、编程题...................................................................................................... - 34 - 第十三课菜单的设计.......................................................................................... - 36 - 一、菜单的基本概念...................................................................................... - 36 - 二、菜单编辑器的打开 .................................................................................. - 36 - 三、设计下拉式菜单...................................................................................... - 37 - 第十四课对话框.................................................................................................. - 41 - 一、提示类对话框.......................................................................................... - 41 - 二、自定义对话框.......................................................................................... - 42 - 三、通用对话框.............................................................................................. - 43 - 附录实例应用荟萃.............................................................................................. - 45 -

易语言基础知识第一篇

第一章、基础知识 1.1 基本数据类型 1.2 变量和常量 1.2.1 变量和常量的命名 1.2.2 变量的作用范围 1.2.3 静态变量 1.2.4 变量的初始值 1.3 运算符 1.4流程控制 1.4.1 如果、如果真、判断 1.4.2 判断循环、循环判断 1.4.3 计次循环、变量循环 1.4.4 到循环尾、跳出循环 1.4.5 返回、结束 1.5 子程序(函数) 1.5.1 子程序参数(参考、可空) 1.5.2 子程序的递归 1.5.3 子程序的静态局部变量 1.6 自定义数据类型 1.6.2 自定义数据类型的内存存储 1.7 数组 1.7.1 数组的维数 1.7.2 数组的排序 选择排序 插入排序 快速排序 自定义数据类型数组的多级排序 1.7.3 [例]扫雷游戏 第二章、字节集 《将字节集显示为十六进制》 《文件分割机》 《数据隐藏》 《电子贺卡》 《配置信息写入exe文件》 《exe文件捆绑》 《exe文件的自校验》 Windows API和动态链接库 <枚举窗口,枚举进程> <使窗口可移动> <窗口子类化> <动态菜单> <动态组件> <文件拖放> <读取dll中的资源-扑克牌图片>

<读DOS程序执行结果> <自制皮肤> <远程线程> 。。。。。 文件系统 <模拟资源管理器> <文件格式> 《编写自己的文件格式》 易语言模块编程 注册表 文件关联、命令行处理、文件右键菜单 枚举注册表 注册表模拟器 图像处理 取图像宽度、高度 取像素字节集 各种图像运算方法 面向对象编程 类、封装、属性、行为、继承、多态性矢量图形(面向对象程序设计) CAD 系统 EMF 文件的读写 OpenGL 三维图形编程 DirectX 游戏编程 网络编程 <聊天程序> <远程控制> <邮箱登录器> <天气查询> 数据库编程 界面编程 <使用《易容大师》进行界面编程>

易语言入门基础

第一课.计算机的一般知识 1.1电子计算机的发展及其基本结构 1.1.1电子计算机的发展史 1945年底,在美国首次研制成功人类第一台计算机,这台机器重30吨,占地面积达167平方米,加之它的工作原理,因此,人类后来的计算机并不是在这台机器的基础上发展起来的。 现代计算机理论的奠基人是图灵。在美国数学家冯.诺伊曼的主持下,1949年诞生了第一台存储程序的计算机,又称第一代机,这台计算机为后来的计算机发展奠定了基础。1959年,第一台晶体管计算机问世,由此,计算机进入了第二代。1964年,IBM第一代360系列计算机问世,这是第一代通用计算机,为研制这种计算机,IBM投资50亿美元,比二战期间美国政府投入到原子弹研究的钱(20亿美元)还要多;由此,计算机进入了第三代。 进入到80年代以后,中大型计算机问世,于是开始了第四代计算机的时代。70年代以后,出现了计算速度更快、存储量更大的巨型机。 70年代微处理器的问世,标志着计算机的发展开始了又一场革命。1977年3月苹果公司的个人用计算机问世,自此,计算机开始进入千家万户。 1.1.2电子计算机的基本结构 计算机由硬件和软件组成。而硬件是由主机和外部设备组成;软件由系统软件和应用软件组成。 计算机硬件是软件的基础,是软件发挥功能的工作环境,而软件则是管理和利用硬件资源来实现计算机的功能,软件和硬件是相互促进和发展的。 硬件大体上有以下几个部分:控制器,运算器,内存储器(RAM、ROM),输入设备和输出设备。前三者又合称主机,后两者又称作外部设备。现在就这五个部分的功能,作一些简要说明。 1.输入设备。输入设备是用来向主机输入原始数据和处理这些数据所使用的计算程序列的设备。输入设备的种类很多,但在微型机上不外乎下列几种: (1)终端键盘。利用手指击键方法向计算机输入信息。用户自己写的程序列化和准备处理的数据,都可由键盘上敲入。 (2)磁盘。磁盘,实际上也是存储信息的,因为它们都是主机之外的设备,所以也称为外存储器。外存储器上的信息,也可以输入到机器中去。 (3)模—数(A/D)转换器。它可以将连续变化的模拟量(如电压、电流、长度、角度等)转换为数字量,送入到机器中去。 此外,图形输入板、声音输入装置等,实际上是专用的模数转换器,同样可以为计算机输入信息。 2.输出设备。输出设备是用来输出计算结果或其它信息的。常用的输出设备有: (1)显示终端。用以显示计算机的有关信息,占用户从键盘上敲入并为机器接收的字符、机器清单、机器向用户的提示,程序运行时的输绐(包括数字、文字或图形)等。 (2)打印机。显示终端上可显示的东西几乎都可以由打印机打印到纸上。

PIC8位单片机汇编语言常用指令的识读

PIC8位单片机汇编语言常用指令的识读(上) 各大类单片机的指令系统是没有通用性的,它是由单片机生产厂家规定的,所以用户必须遵循厂家规定的标准,才能达到应用单片机的目的。 PIC 8位单片机共有三个级别,有相对应的指令集。基本级PIC系列芯片共有指令33条,每条指令是12位字长;中级PIC系列芯片共有指令35条,每条指令是14位字长;高级PIC 系列芯片共有指令58条,每条指令是16位字长。其指令向下兼容。 在这里笔者介绍PIC 8位单片机汇编语言指令的组成及指令中符号的功能,以供初学者阅读相关书籍和资料时快速入门。 一、PIC汇编语言指令格式 PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下: 标号操作码助记符操作数1,操作数2;注释 指令格式说明如下:指令的4个部分之间由空格作隔离符,空格可以是1格或多格,以保证交叉汇编时,PC机能识别指令。 1 标号与MCS-51系列单片机功能相同,标号代表指令的符号地址。在程序汇编时,已赋以指令存储器地址的具体数值。汇编语言中采用符号地址(即标号)是便于查看、修改,尤其是便于指令转移地址的表示。标号是指令格式中的可选项,只有在被其它语句引用时才需派上标号。在无标号的情况下,指令助记符前面必须保留一个或一个以上的空格再写指令助记符。指令助记符不能占用标号的位置,否则该助记符会被汇编程序作标号误处理。 书写标号时,规定第一字符必须是字母或半角下划线“—”,它后面可以跟英文和数字字符、冒号(:)制符表等,并可任意组合。再有标号不能用操作码助记符和寄存器的代号表示。标号也可以单独占一行。 2 操作码助记符该字段是指令的必选项。该项可以是指令助记符,也可以由伪指令及宏命令组成,其作用是在交叉汇编时,“指令操作码助记符”与“操作码表”进行逐一比较,找出其相应的机器码一一代之。 3 操作数由操作数的数据值或以符号表示的数据或地址值组成。若操作数有两个,则两个操作数之间用逗号(,)分开。当操作数是常数时,常数可以是二进制、八进制、十进制或十六进制数。还可以是被定义过的标号、字符串和ASCⅡ码等。具体表示时,规定在二进制数前冠以字母“B”,例如B10011100;八进制数前冠以字母“O”,例如O257;十进制数前冠以字母“D”,例如D122;十六进制数前冠以“H”,例如H2F。在这里PIC 8位单片机默认进制是十六进制,在十六进制数之前加上Ox,如H2F可以写成Ox2F。 指令的操作数项也是可选项。 PIC系列与MCS-51系列8位单片机一样,存在寻址方法,即操作数的来源或去向问题。因PIC系列微控制器采用了精简指令集(RISC)结构体系,其寻址方式和指令都既少而又简单。其寻址方式根据操作数来源的不同,可分为立即数寻址、直接寻址、寄存器间接寻址和位寻址四种。所以PIC系列单片机指令中的操作数常常出现有关寄存器符号。有关的寻址实例,均可在本文的后面找到。 4 注释用来对程序作些说明,便于人们阅读程序。注释开始之前用分号(;)与其它部分相隔。当汇编程序检测到分号时,其后面的字符不再处理。值得注意:在用到子程序时应说明程序的入口条件、出口条件以及该程序应完成的功能和作用。 二、清零指令(共4条) 1 寄存器清零指令 实例:CLRW;寄存器W被清零 说明:该条指令很简单,其中W为PIC单片机的工作寄存器,相当于MCS-51系列单片机中的累加器A,CLR是英语Clear的缩写字母。 2 看门狗定时器清零指令。 实例:CLRWDT;看门狗定时器清零(若已赋值,同时清预分频器)

一些常用的汇编语言指令

汇编语言常用指令 大家在做免杀或者破解软件的时候经常要用到汇编指令,本人整理出了常用的 希望对大家有帮助! 数据传送指令 MOV:寄存器之间传送注意,源和目的不能同时是段寄存器;代码段寄存器CS不能作为目的;指令指针IP不能作为源和目的。立即数不能直接传送段寄存器。源和目的操作数类型要一致;除了串操作指令外,源和目的不能同时是存储器操作数。 XCHG交换指令:操作数可以是通用寄存器和存储单元,但不包括段寄存器,也不能同时是存储单元,还不能有立即数。 LEA 16位寄存器存储器操作数传送有效地址指令:必须是一个16位寄存器和存储器操作数。 LDS 16位寄存器存储器操作数传送存储器操作数32位地址,它的16位偏移地址送16位寄存器,16位段基值送入DS中。 LES :同上,只是16位段基址送ES中。 堆栈操作指令 PUSH 操作数,操作数不能使用立即数, POP 操作数,操作数不能是CS和立即数 标志操作指令 LAHF:把标志寄存器低8位,符号SF,零ZF,辅助进位AF,奇偶PF,进位CF传送到AH 指定的位。不影响标志位。 SAHF:与上相反,把AH中的标志位传送回标志寄存器。 PUSHF:把标志寄存器内容压入栈顶。 POPF:把栈顶的一个字节传送到标志寄存器中。 CLC:进位位清零。 STC:进位位为1。 CMC:进位位取反。 CLD:使方向标志DF为零,在执行串操作中,使地址按递增方式变化。 STD:DF为1。 CLI:清中断允许标志IF。Cpu不相应来自外部装置的可屏蔽中断。 STI:IF为1。 加减运算指令

注意:对于此类运算只有通用寄存器和存储单元可以存放运算结果。如果参与运算的操作数有两个,最多只能有一个存储器操作数并且它们的类型必须一致。 ADD。 ADC:把进位CF中的数值加上去。 INC:加1指令 SUB。 SBB:把进位CF中数值减去。 DEC:减1指令。 NEG 操作数:取补指令,即用0减去操作数再送回操作数。 CMP:比较指令,完成操作数1减去操作数2,结果不送操作数1,但影响标志位。可根据ZF(零)是否被置1判断相等;如果两者是无符号数,可根据CF判断大小;如果两者是有符号数,要根据SF和OF判断大小。 乘除运算指令 MUL 操作数:无符号数乘法指令。操作数不能是立即数。操作数是字节与AL中的无符号数相乘,16位结果送AX中。若字节,则与AX乘,结果高16送DX,低16送AX。如乘积高半部分不为零,则CF、OF为1,否则为0。所以CF和OF表示AH或DX中含有结果的有效数。IMUL 操作数:有符号数乘法指令。基本与MUL相同。 DIV 操作数:被除数是在AX(除数8位)或者DX和AX(除数16位),操作数不能是立即数。如果除数是0,或者在8(16)位除数时商超过8(16)位,则认为是溢出,引起0号中断。IDIV:有符号除法指令,当除数为0,活着商太大,太小(字节超过127,-127字超过32767,-32767)时,引起0号中断。 符号扩展指令 CBW,CWD:把AL中的符号扩展到寄存器AH中,不影响各标志位。CWD则把AX中的符号扩展到DX,同样不影响标志位。注意:在无符号数除之前,不宜用这两条指令,一般采用XOR 清高8位或高16位。 逻辑运算指令与位移指令 注意:只能有一个存储器操作数;只有通用寄存器或存储器操作数可作为目的操作数,用于存放结果;操作数的类型必须一致。 NOT:取反,不影响标志位。 AND 操作数1 操作数2:操作结果送错作数1,标志CF(进位)、OF(溢出)清0,PF(奇偶)ZF(0标志) SF(符号)反映运算结果,AF(辅助进位)未定义。自己与自己AND值不变,她主要用于将操作数中与1相与的位保持不变,与0相与清0。(都为1时为1)OR 操作数1 操作数2:自己与自己OR值不变,CF(进位)、OF(溢出)清0,PF(奇偶)ZF(0标志)SF(符号)反映运算结果,AF(辅助进位)未定义。她使用于将若干位置1:

易语言教程菜鸟专版

易语言教程菜鸟专版 打开易语言5.11之后会出现如下界面,此时双击“Windows窗口程序”就会新建一个空白窗口程序 然后会出现如下界面 这样,一个空白的程序就完成了,我们可以ctrl+S或者在菜单栏上的程序中将程序保存一下

保存到需要的文件夹内即可,这样一个新的易语言程序就算初步成型,接下来让我们继续完善一下。 看到左侧的名称一栏吗,这里是窗口内部的名称,如果命名为“_启动窗口”那么程序启动时,名为_启动窗口的窗口会最先出现,下面的备注可以随便输入一些注释,留作标记,防止自己忘记,宽度高度则是定义窗口的大小,嘿,看到那个叫标题的输入框吗?在这里输入任意汉字英文或数字即可更改窗口的名称,我这里将其暂时命名为“学习程序”,对了,除了在这里定义窗口名之外,还能用代码更改窗口名哦!让我们来学习一下!先点选此处

,点击创建完毕然后就会跳转到代码窗口 我们来试着写代码来更改窗口标题,注意要写在这个创建完毕的子程序下面哦,这表示窗口创建完毕时立即执行以下代码。 _启动窗口.标题= “我是学习程序” 让我们来分析一下这段代码,_启动窗口就是窗口名称,.标题表示窗口的标题,然后用=表示启动窗口的标题等于“我是学习程序”注意必须要在这个标题的两边加上双引号,因为这是文本型的数据,好了,让我们按下F5来测试一下。

看到了么,成功!窗口的标题不是我们之前定义的学习程序,而是我们用代码写的我是学习程序,很神奇吧! 这样还不算什么?那么接下来让我们继续 找到右侧的组件框,选择基本组件中的编辑框创建一个编辑框组件。

在窗口上调整一下大小即可,然后在左侧的内容里输入:“欢迎使用学习程序” F5.

汇编语言的各条指令

常用命令 数据传送指令 一通用数据传送指令 MOV指令为双操作数指令,两个操作数中不能全为内存操作数 格式:MOV DST,SRC 执行操作:dst = src 注:1.目的数可以是通用寄存器,存储单元和段寄存器(但不允许用CS段寄存器). 2.立即数不能直接送段寄存器 3.不允许在两个存储单元直接传送数据 4.不允许在两个段寄存器间直接传送信息 PUSH入栈指令及POP出栈指令: 堆栈操作是以“后进先出”的方式进行数据操作。 格式:PUSH SRC //Word 执行操作:(SP)<-(SP)-2 ((SP)+1,(SP))<-(SRC) 注:1.入栈的操作数除不允许用立即数外,可以为通用寄存器,段寄存器(全部)和存储器。

2.入栈时高位字节先入栈,低位字节后入栈。 格式:POP DST //Word 执行操作:(DST)<-((SP+1),(SP)) (SP)<-(SP)+2 注:1.出栈操作数除不允许用立即数和CS段寄存器外,可以为通用寄存器,段寄存器和存储器。 2.执行POP SS指令后,堆栈区在存储区的位置要改变。 3.执行POP SP 指令后,栈顶的位置要改变。 XCHG(eXCHanG)交换指令: 将两操作数值交换。 格式:XCHG OPR1,OPR2 //Byte/Word 执行的操作:(OPR1)<-->(OPR2) 注:1.必须有一个操作数是在寄存器中 2.不能与段寄存器交换数据 存储器与存储器之间不能交换数据。 二累加器专用传送指令 IN输入指令 长格式为:IN AL,PORT(字节) IN AX,PORT(字) 执行的操作:(AL)<-(PORT)(字节)

易语言Super-EC与按键精灵脚本命令对照表

键盘命令易语言代码 KeyPress ①,②按键(①) '复制该代码②行。 KeyDown ①,②按键(①, #按下_) KeyUp ①,②按键(①, #放开_) KeyPressS ①,② WINIO.按键(①) '复制该代码②行。 KeyDownS ①,② WINIO.按键(①, #按下_) KeyUpS ①,②WINIO.按键(①, #放开_) KeyPressH ①,② WINIO.按键(①) '暂不支持超级模拟按键。只能用此取替。KeyDownH ①,② WINIO.按键(①, #按下_) '暂不支持超级模拟按键。只能用此取替。KeyUpH ①,②WINIO.按键(①, #放开_) '暂不支持超级模拟按键。只能用此取替。鼠标命令易语言代码 LeftClick ①鼠标键( #左键_, #单击_) '复制该代码①行。 RightClick ①鼠标键(#右键_, #单击_) '复制该代码①行。 MiddleClick ①鼠标键(#中键_, #单击_) '复制该代码①行。 LeftDoubleClick ①鼠标键(#左键_, #双击_) '复制该代码①行。 LeftDown ①鼠标键( #左键_, #按下_) '复制该代码①行。 LeftUp ①鼠标键( #左键_, #放开_) '复制该代码①行。 RightDown ①鼠标键( #右键_, #按下_) '复制该代码①行。 RightUp ①鼠标键( #右键_, #放开_) '复制该代码①行。 MoveTo ①,②鼠标移动(, ①, ②) MoveR ①,②鼠标移动(, 取鼠标水平位置() +①, 取鼠标垂直位置() +②) LeftClickS ①WINIO.鼠标按键(#左键_, #单击_) '复制该代码①行。

反汇编语言常用指令

内容目录 计算机寄存器分类简介 计算机寄存器常用指令 一、常用指令 二、算术运算指令 三、逻辑运算指令 四、串指令 五、程序跳转指令 ------------------------------------------ 计算机寄存器分类简介: 32位CPU所含有的寄存器有: 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。 32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。 对低16位数据的存取,不会影响高16位的数据。 这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。 程序员可利用数据寄存器的这种“可分可合”的特性,灵活地处理字/字节的信息。 寄存器EAX通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。可用于乘、除、输入/输出等操作,使用频率很高; 寄存器EBX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器ECX称为计数寄存器(Count Register)。 在循环和字符串操作时,要用它来控制循环次数;在位操作中,当移多位时,要用CL来指明移位的位数;寄存器EDX称为数据寄存器(Data Register)。在进行乘、除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。 在16位CPU中,AX、BX、CX和DX不能作为基址和变址寄存器来存放存储单元的地址, 在32位CPU中,其32位寄存器EAX、EBX、ECX和EDX不仅可传送数据、暂存数据保存算术逻辑运算结果, 而且也可作为指针寄存器,所以,这些32位寄存器更具有通用性。 2、变址寄存器 32位CPU有2个32位通用寄存器ESI和EDI。 其低16位对应先前CPU中的SI和DI,对低16位数据的存取,不影响高16位的数据。 寄存器ESI、EDI、SI和DI称为变址寄存器(Index Register),它们主要用于存放存储单元在段内的偏移量,用它们可实现多种存储器操作数的寻址方式,为以不同的地址形式访问存储单元提供方便。 变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。 3、指针寄存器

汇编语言常见指令

?PTR?操作符:强制类型转换 MOV BYTE PTR [BX], 20H ;1B立即数20H送DS:[BX] MOV WORD PTR [BX], 20H ;立即数20H送DS:[BX], ;00H送DS:[BX+1] 2.LEA(Load Effective Address) 设:变量X的偏移地址为1020H , (BP)=0020H 执行指令后: LEA DX, X LEA BX, [BP] ; 执行后, (DX) = 1020H ; 执行后, (BX) = 0020H 3.地址传送指令LDS,LES LDS REG16, MEM ; 从存储器取出4B,送入REG16和DS LES REG16, MEM ; 从存储器取出4B,送入REG16和ES 4.符号扩展指令CBW,CWD CBW ;将AL寄存器内容符号位扩展到AH CWD ;将AX寄存器内容符号位扩展到DX 设:(AX)= 8060H,(DX)=1234H 执行下列指令后 CBW ;(AX)= 0060H 设:(AX)= 8060H,(DX)=1234H 执行下列指令后 CWD ;(DX)= 0FFFFH,(AX)= 8060H 5.交换指令XCHG 例如,(AX)= 5678H 执行下面指令后 XCHG AH, AL ;(AX)= 7856H 6.换码指令XLAT XLAT ;AL←DS: [BX+AL] 表格的首地址事先存放在内存逻辑地址DS: BX中, AL的内容是相对于表格的位移量, 把对应内存的内容取出放在AL寄存器。 7.逻辑运算符 SHR(右移) SHL(左移) AND(与) OR(或) XOR(异或)

相关主题
文本预览
相关文档 最新文档