文档库 最新最全的文档下载
当前位置:文档库 › section说明

section说明

section说明
section说明

SECTION简介:

SECTION是基于武汉中地公司MAPGIS地理信息系统的基础平台上,以Microsoft VC++ 6.0为编程语言,以MAPGIS6.7 SDK为开发平台进行开发的地质图件制作软件。系统基于MapGis输入编辑子系统强大的图形编辑能力,添加专业的地质图件制作工具,大大提高了地质图件的制作效率。地质数据采集系统采用ACCESS 格式,自动计算生成符合行业标准的MAPGIS格式地质图件。

程序安装:

将SECTION.exe和帮助文件拷贝到你安装Mapgis的盘符,如 C:Mapgis67\program 目录下使用。直接执行section.exe文件。

实现功能:

1、剖面图功能:在地形地质图上采集数据,自动形成地形线,地层分层信息。从柱状图数据库中采集钻孔数据,样品数据,形成剖面。

2、柱状图功能:利用ACCESS数据库输入数据,自动计算形成柱状图。

3、其他功能:包括区域填充线、子图文字对齐、导出线点坐标、常用地层代号子图、导出属性到EXCEL表、插入EXCEL表、插入图签、插入等高线、格式刷、精确制导、线角度长度修改、裁剪工具、超级复制粘贴、距离角度量算。

注意事项:

1、绘制剖面图需要校正地形图。

2、请注意地形图的比例尺和剖面图的比例尺,不然会画出的剖面图会变形。

3、必须在MapGis67版本下使用,否则会出错。

需要说明的一些事:

非常感谢华夏土地网站长大力支持和帮助,感谢QQ群里的朋友无私的测试,反馈软件的问题,提出了很好的建议,在这表示感谢。

本软件完全免费,在使用过程中,如果是本软件的缺陷造成你的损失,本人不承担任何责任。你可以选择不使用。本软件可以自由传播,但不能用于商业用途。

2008.12.27更新:

这次更新主要是解决软件在移植代码的时候没有考虑到的问题,还有就是柱状图做了细微的调整。加入了插入图签功能。

2009.01.04更新:

1、增加了地层信息处理。

2、增加画定方位定长度直线。

3、修正了画0度,90度方位剖面错误。

4、修正比例尺为1:1000以外为其他比例尺时画剖面错误。

2009.02.20更新

本次更新不大,修正了一些错误,加入了量直线距离角度。

2009.03.06更新:

1、完善插入图签功能。

2、加入超级拷贝、粘贴功能,可以在不同的工程,不同文件之间自用拷贝,位置可以自己定。

3、加入参数设置,可以控制不同的图签,改变控制栏位置,大小。

2009.04.07更新:

1、增加线长度角度修改功能。

2、增加导出线结点坐标功能。

3、增加文字、子图对齐功能。

4、增加插入等高线功能。

5、增加区域填充线功能。

6、增加常用符号、子图添加功能。

7、增加裁剪工具。

8、增加格式刷功能。

9、增加剖面图画钻孔、添加钻孔样品功能。

2009-4-21更新:

1、增加导出点、线、面属性到EXCEL表。

2、增加插入EXCEL表。

3、增加选择勘探线读取地形数据。

2009-6-6更新:

增加功能:

1、增加数据投影功能。数据在EXCEL表格中,能投影点、线,多条线,自动标注等功能。

2、增加筛选功能,分为属性筛选和参数筛选,选择相同图元功能。

3、增加自定义剖面高程。

4、选择区填充线,基本是为了画剖面花纹方便。

5、定距、定长等分线。

6、动态显示属性功能。

7、增加新建工程时,添加参数设置对话框。

8、增加批量合并相邻相同颜色区。

改进功能:

1、自动赋高程,能读取画线的第一条线高程,去掉从左到右原则。

2、裁剪功能,会自动生成图框。

修正功能:

1、柱状图中线宽度问题,责任签文字对齐问题。

2、剖面图二次读取地形数据会造成探槽,钻孔、地层信息位置错误问题。

3、改正出现两个操作重叠问题。

4、键盘移动图元步长问题。

5、选线填充线,线参数变0问题。

6、导出点,在图上增加ID号标识。

2009.06.07错误更新:

1、工具参数设置,添加背景颜色选择对话框。

2、改正导入属性错误。

3、导出线点坐标自定义标记参数。

4、增加自定义压缩符号的图号。

5、改正柱状图表头终孔倾角错误。

6、改正柱状图责任签有时不与底部对齐。

7、重新编写剪断相交线。改正有些线乱飞情况。

2009.06.12错误更新

1、改进剪断线丢属性,产生不可见的线问题。

2、改正修改线长度、角度会出现乱飞、变长、位置变动问题,去掉了后悔操作。

3、改正导出线点坐标,标注和文本文件中ID为属性中的ID号。

4、改正直线距离两次输入点会出错自动退出错误。

5、重新编写导入EXCEL数据,能选择导入EXCEL数据,能导入的有字体、文字大小、颜色,边框。

重新编写了导入数据对齐问题。

2009.06.25更新

1、改进柱状图终孔倾角在没有“°”的情况下,造成输出数据错误。

2、改正剪断线线头与另外一条线相交,出现乱线错误。

3、新增注释赋区属性,自动增量标注。

4、改进EXCEL转MapGis在默认对齐方式下,数字靠右,字符串靠左,和EXCEL 对应。

5、增加MapGis转Excel功能。

6、改正裁剪情况下选不闭合线会错误退出问题。

7、改正EXCEL转MapGis功能,如果在Excel里面从右到左选择会出现不正常转入问题。

8、解决柱状图,地层孔深数据、样品数据在分层薄处重叠问题。

9、重新编写柱状图代码,解决柱状图描述与分层对齐问题,选择栏目少,附表重叠问题,数据库里面设置字体不起作用问题。

2009.07.20更新

1、增加利用线节点生成样槽。

2、增加一定范围里注释赋给点图元属性。

3、增加删除重复图元功能。

4、增加实体号赋给ID号。

5、增加通过线高程属性计算图中点的高程,并赋给点高程属性。

6、改进柱状图描述与分层对齐功能。

7、改进超级复制粘贴功能。

(完整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段寄存器中。

汇编语言指令详解

第一讲 第三章 指令系统--寻址方式 回顾: 8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过 程。 重点和纲要:指令系统--寻址方式。有关寻址的概念;6种基本的寻址方式及 有效地址的计算。 教学方法、实施步骤 时间分配 教学手段 回 顾 5”×2 板书 计算机 投影仪 多媒体课件等 讲 授 40” ×2 提 问 3” ×2 小 结 2” ×2 讲授内容: 3.1 8086/8088寻址方式 首先,简单讲述一下指令的一般格式: 操作码 操作数 …… 操作数 计算机中的指令由操作码字段和操作数字段组成。 操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。 操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。 寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。8086/8088的基本寻址方式有六种。 1.立即寻址 所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。如图所示。 例如:MOV AX ,3000H 立即数可以是8位的,也可以是16位的。若

是16位的,则存储时低位在前,高位在后。 立即寻址主要用来给寄存器或存储器赋初值。 2.直接寻址 操作数地址的16位偏移量直接包含在指令中。它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。如图2-2所示。 例如: MOV AX,DS:[2000H]; 图2-2 (对DS来讲可以省略成 MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。 8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。 MOV AX,[2000H] ;数据段 MOV BX,ES:[3000H] ;段超越,操作数在附加段 即绝对地址=(ES)*16+3000H 3.寄存器寻址 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。 例如:MOV DS,AX MOV AL,BH 4.寄存器间接寻址 操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄存器SI、DI、BP、BX之一中。可以分成两种情况:

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;看门狗定时器清零(若已赋值,同时清预分频器)

汇编语言指令集合 吐血整理

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):堆栈段寄存器;

反汇编语言常用指令

内容目录 计算机寄存器分类简介 计算机寄存器常用指令 一、常用指令 二、算术运算指令 三、逻辑运算指令 四、串指令 五、程序跳转指令 ------------------------------------------ 计算机寄存器分类简介: 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(异或)

汇编语言常用指令大全解释

常用汇编指令: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段寄存器中。 LES (Load ES with pointer) 指针送寄存器和ES指令 LES REG , SRC //常指定DI寄存器 执行操作: REG=(SRC) , ES=(SRC+2) //与LDS大致相同,不同之处是将ES代替DS而已. LAHF( Load AH with Flags ) 标志位送AH指令

汇编语言常见错误指令解决办法

(1) MOV DS, 2010H ;立即数不能传送到DS (2) PUSH AL ;栈操作,操作数类型必须为WORD类型 (3) MOV DX,[SP] ;SP寄存器不能做间址寄存器 (4) IN AL,0A00H ;I/O指令的直接寻址,地址只能为8位 (5) XCHG CL,CH ;正确 (6) SHR AX,3 ;移位超过一位时,应采用CL寄存器间址 (7) AAA CX ;非组合的BCD码加法调整AAA指令应为隐含操作数 (8) ADD [BP+DI] ;加法指令ADD,缺少源操作数 (9) OUT DX,CL ;I/O指令操作数只能用AX、AL提供,端口地址可以是8位的直接地址或用DX间址(10)CBW BH ;符号扩展指令为隐含操作数 (11)ADD 03ECH ;加法指令应为双操作数指令,立即数不能做目的操作数 (12)MOV BX, [SI+DI] ;源操作数形式错误,SI和DI不能同时做为间址寄存器 (13)MOV DI, [AX] ;AX不能做为间址寄存器 (14)OUT 258H, BX ;I/O指令格式错误,见(9)题的解释 (15)SHL AX, 3 ;移位指令,位移位数大于1时,应用CL来指明 (16)MOV 64H,AL ;立即数不能做为目的操作数 (17)ADD AL,6600H ;源、目的操作数的类型不一致 (18)MOV[BX],[SI];传送指令中,两个操作数不能同时为存储器操作数 (19)XCHG AX,8800H ;交换指令的操作数不能使用立即数 (20)MOV AX,[BX+DX];传送指令的源操作数,不能使用立即数 (21)LEA BX,1000H;有效地址传送指令的源操作数不能为立即数,必须是存储器操作数 (22)DIV 0010H ;正确 (23)LEA DX,DI ;同(21)题,源操作数不能为寄存器操作数 (24)MUL AX,200H ;乘法指令的目的操作数是隐含的,不能出现在指令中 (25)MOV AX, [BX+BP];传送指令中源操作数格式错,BX和BP不能同时为间址寄存器 (26)CMP [BX], [SI] ;比较指令的两个操作数不能同时为存储器操作数 (27)OUT DX, BX ;I/O指令中,源操作数只能使用AL或AX寄存器 (28)AND OFH,AL ;“与”指令中,目的操作数不能使用立即数 (29)SAL [BX],CX ;移位指令,移位位移不能用CX寄存器指明 (30)JMP FAR [BX+SI] ;转移指令中转移的目标地址表达方式错误 ;如果是段内间接转移,应为:JMP WORD PTR[BX+SI] ;如果是段间间接转移,应为:JMP DWORD PTR[BX+SI] (31)JNZ AAA;不相等转移指令中,符号地址(标识符)不能使用系统中的保留字 (32)JMP NEXT ;正确 (33)SBC AX, [DX] ;指令助记符错,源操作数表示方式错 (34)MOV CS,DS;段寄存器之间不能传送数据,CS寄存器也不能做为目的操作数 (35)ADD DS, AX ;加法指令中段寄存器不能做为操作数 (36)MOV AL,CX ;源、目的操作数的类型不一致,见(17)题 (37)INC [BX];没有指定存储器操作数类型 (38)MOV CL,A8H;源操作数为16进制的立即数,16进制数以字母开头时应在前面加“0”

常见汇编语言指令解释:

参数代表的意义: 1、Rn 表示R0~R7中的一个 2、#data 表示8位的数值 00H~FFH 3、direct 表示8位的地址 00H~FFH 4、@Ri 表示寄存器间接寻址只能是R0或者R1 5、@DPTR 表示数据指针间接寻址 6、bit 表示位地址 7、$ 表示当前地址 常见汇编语言指令解释: 寄存器寻址 MOV A,R1将R1中的数值赋予A 直接寻址 MOV A,3AH将地址3AH中的数值赋予A 立即寻址 MOV A,#3AH将3AH数值赋予A 寄存器间址 MOV A,@R0 将 R0中地址的数值赋予A 变址寻址 MOVC A,@A+DPTR以A中的数值为地址偏移量进行查表相对寻址 AJMP MATN跳转到行号为MATN处 位寻址 MOV C,7FH 将位地址7FH的数值赋予C MOV A,#3AH数据传输、赋值命令 PUSH direct将direct为地址的数值压入堆栈中 POP direct将direct为地址的数值弹出堆栈 XCH A,direct将direct中的数值与A进行交换

ADD A,direct将direct中的数值与 INC direct将direct中的数值加1 SUBB A,direct将A中的数值减去direct中的数值和Cy值,并保存在A中,如果想使用不带Cy减法,可以在运算前对Cy清零:CLR C DEC direct将direct中的数值减1 DA A 用于对BCD码加减法后进行10进制调整 MUL A B将A和B相乘,并把高八位放在B中,低八位放在A中 DIV A B将A和B相除,并把商放在A中,余数放在B中 ANL A,direct将A与direct中的数值进行与运算,结果保留在A中(与运算规律:有0出0,全1出1) ORL A,direct将A与direct中的数值进行或运算,结果保留在A中(或运算规律:有1出1,全0出0) XRL A,direct将A与direct中的数值进行异或运算,结果保留在A 中(异或运算规律:全0出0,全1出0,01、10出1) CRL A 对A清零 CPL A 对A取反 RL A对A中数右移 RR A对A中数左移 RLC A 对A中数带Cy右移 RRC A对A中数带Cy左移 SWAP A 对A中的数高4位和低4位互相交换 LJMP 长跳转指令,64K地址范围

常见汇编语言指令解释

常见汇编语言指令解释: 1.Rn 表示R0~R7中的一个 2.#data 表示8位的数值 00H~FFH 3.direct 表示8位的地址 00H~FFH 4.#data16 16位立即数 5.@Ri 表示寄存器间接寻址只能是R0或者R1 6.@DPTR 表示数据指针间接寻址,用于外部64k的RAM/ROM寻址 7.bit 表示位地址 8.$ 表示当前地址 寄存器寻址 MOV A,R1 将R1中的数值赋予A 直接寻址 MOV A,3AH 将地址3AH中的数值赋予A 立即寻址 MOV A,#3AH 将3AH数值赋予A mov dptr,#1828h 寄存器间址 MOV A,@Ri 将 Ri中地址的数值赋予A, Ri或是R0或是R1 MOV A,@DPTR 变址寻址 MOVC A,@A+DPTR 以A中的数值为地址偏移量进行查表;变址寻址区是程序存储器ROM,而不是数据存储器RAM 相对寻址 AJMP MAIN 跳转到行号为MAIN处 位寻址 MOV C,7FH 将位地址7FH的数值赋予C MOV C,2FH.7; MOV C,ACC.7 MOV A,#3AH 数据传输、赋值命令 PUSH direct 将direct为地址的数值压入堆栈中 POP direct 将direct为地址的数值弹出堆栈 XCH A,direct 将direct中的数值与A进行交换 ADD A,direct 将direct中的数值与A中的数值相加 INC direct 将direct中的数值加1 SUBB A,direct 将A中的数值减去direct中的数值和Cy值,并保存在A中,如果想使用不带Cy减法,可以在运算前对Cy清零 CLR C DEC direct 将direct中的数值减1 DA A 用于对BCD码加减法后进行10进制调整 MUL AB 将A和B相乘,并把高八位放在B中,低八位放在A中 DIV AB 将A和B相除,并把商的整数部分放在A中,余数放在B中 ANL A,direct 将A与direct中的数值进行与运算,结果保留在A中(与运算规律:有0出0,全1出1)ORL A,direct 将A与direct中的数值进行或运算,结果保留在A中(或运算规律:有1出1,全0出0)XRL A,direct 将A与direct中的数值进行异或运算,结果保留在A中(异或运算规律:全0出0,全1出0,01、10出1) CLR A 对A清零 CPL A 对A取反 RL A 对A中数左移 RR A 对A中数右移 RLC A 对A中数带Cy左移 RRC A 对A中数带Cy右移 SWAP A 对A中的数高4位低4位互相交换 LJMP 长跳转指令,64K地址范围

汇编语言英文指令

汇编语言英文指令 AH&AL=AX(accumulator):累加寄存器 BH&BL=BX(base):基址寄存器 CH&CL=CX(count):计数寄存器 DH&DL=DX(data):数据寄存器 SP(Stack Pointer):堆栈指针寄存器 BP(Base Pointer):基址指针寄存器 SI(Source Index):源变址寄存器 DI(Destination Index):目的变址寄存器 IP(Instruction Pointer):指令指针寄存器 CS(Code Segm ent)代码段寄存器 DS(Data Segm ent):数据段寄存器 SS(Stack Segm ent):堆栈段寄存器 ES(Extra Segment):附加段寄存器 OF overflow flag 溢出标志操作数超出机器能表示的范围表示溢出,溢出时为1. SF sign Flag 符号标志记录运算结果的符号,结果负时为1. ZF zero flag 零标志运算结果等于0时为1,否则为0. CF carry flag 进位标志最高有效位产生进位时为1,否则为0. AF auxiliary carry flag 辅助进位标志运算时,第3位向第4位产生进位时为1,否则为0. PF parity flag 奇偶标志运算结果操作数位为1的个数为偶数个时为1,否则为0. DF direction flag 方向标志用于串处理.DF=1时,每次操作后使SI和DI减小.DF=0时则增大. IF interrupt enable flag 中断允许标志IF=1时,允许CPU响应可屏蔽中断,否则关闭中断. TF trap flag 陷阱标志用于调试单步操作

汇编语言各种指令的解释与用法

【数据传输指令】 一、通用数据传送指令 1、传送指令MOV (move) 指令的汇编格式:MOV DST,SRC 指令的基本功能:(DST)<-(SRC) 将原操作数(字节或字)传送到目的地址。 指令支持的寻址方式:目的操作数和源操作数不能同时用存储器寻址方式,这个限制适用于所有指令。指令的执行对标志位的影响:不影响标志位。 指令的特殊要求:目的操作数DST和源操作数SRC不允许同时为段寄存器; 目的操作数DST不能是CS,也不能用立即数方式。 2、进栈指令PUSH (push onto the stack) 出栈指令 POP (pop from the stack) 指令的汇编格式:PUSH SRC ;POP DST 指令的基本功能:PUSH指令在程序中常用来暂存某些数据,而POP指令又可将这些数据恢复。PUSH SRC (SP)<-(SP)-2 ;(SP)<-(SRC) POP DST (DST)<-((SP));(SP)<-(SP) 指令支持的寻址方式:push 和 pop指令不能不能使用立即数寻址方式。 指令对标志位的影响:PUSH 和 POP指令都不影响标志位。 指令的特殊要求:PUSH 和 POP指令只能是字操作,因此,存取字数据后,SP的修改必须是+2 或者 -2; POP指令的DST不允许是CS寄存器; 3、交换指令XCHG (exchange) 指令的汇编格式:XCHG OPR1,OPR2 指令的基本功能:(OPR1)<->(OPR2) 指令支持的寻址方式:一个操作数必须在寄存器中,另一个操作数可以在寄存器或存储器中。指令对标志位的影戏:不影响标志位。 指令的特殊要求:不允许使用段寄存器。 二、累加器专用传送指令 4、输入指令IN (input) 输出指令 OUT (output) 指令的汇编格式:IN ac,port port<=0FFH IN ac,DX port>0FFH OUT port,ac port<=0FFH OUT DX,ac port>0FFH 指令的基本功能:对8086及其后继机型的微处理机,所有I/O端口与CPU之间的通信都由输入输出指令IN和OUT来完成。IN指令将信息从I/O输入到CPU,OUT指令将信息从CPU输出到I/O 端口,因此,IN和OUT指令都要指出I/O端口地址。 IN ac,port port<=0FFH (AL)<-(port)传送字节或 (AX)<-(port+1,port)传送字 IN ac,DX port>0FFH (AL)<-((DX))传送字节或 (AX)<-((DX)+1,(DX))传送字 OUT port,ac port<=0FFH (port)<-(AL)传送字节或 (port+1,port)<-(AX)传送字 OUT DX,ac port>0FFH (DX)<-(AL)传送字节或 ((DX)+1,(DX))<-(AX)传送字 指令对标志位的影响:不影响标志位。指令的特殊要求:只限于在AL或AX与I/O端口之间传送信息。传送16位信息用AX,传送8位信息用AL,这取决于外设端口的宽度。 5、换码指令XLAT (translate)

汇编语言常用语句一览

汇编语言常用语句一览 一、数据传输指令 ──────────────────────────────────它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据. 1.通用数据传送指令. MOV传送字或字节. MOVSX先符号扩展,再传送. MOVZX先零扩展,再传送. PUSH把字压入堆栈. POP把字弹出堆栈. PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. BSWAP交换32位寄存器里字节的顺序 XCHG交换字或字节.(至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG比较并交换操作数.(第二个操作数必须为累加器AL/AX/EAX) XADD先交换再累加.(结果在第一个操作数里) XLAT字节查表转换.──BX指向一张256字节的表的起点,AL 为表的索引值(0-255,即0-FFH);返回AL为查表结果.([BX+AL]->AL) 2.输入输出端口传送指令. IN I/O端口输入.(语法:IN累加器,{端口号│DX}) OUT I/O端口输出.(语法:OUT{端口号│DX},累加器) 输入输出端口由立即方式指定时,其范围是0-255;由寄存器DX 指定时,其范围是0-65535. 3.目的地址传送指令. LEA装入有效地址.例:LEA DX,string;把偏移地址存到DX. LDS传送目标指针,把指针内容装入DS.例:LDS SI,string;把段地址:偏移地址存到DS:SI. LES传送目标指针,把指针内容装入ES.例:LES DI,string;把段地址:偏移地址存到ES:DI. LFS传送目标指针,把指针内容装入FS.例:LFS DI,string;把段地址:偏移地址存到FS:DI. LGS传送目标指针,把指针内容装入GS.例:LGS DI,string;把段地址:偏移地址存到GS:DI. LSS传送目标指针,把指针内容装入SS.例:LSS DI,string;把段地址:偏移地址存到SS:DI. 4.标志传送指令. LAHF标志寄存器传送,把标志装入AH. SAHF标志寄存器传送,把AH内容装入标志寄存器. PUSHF标志入栈.

汇编语言指令速查表汇总

附录 附录A 常用80x86指令速查表 指令按助记符字母顺序排列,缩写、符号约定如下: (1) 指令中,dst, src表示目的操作数和源操作数。仅一个操作数时,个别处也表示为opr。 (2) imm表示立即数,8/16/32位立即数记作:imm8/imm16/imm32。 (3) reg表示通用寄存器,8/16/32位通用寄存器记作:reg8/reg16/reg32。 (4) mem表示内存操作数,8/16/32等内存操作数记作:mem8/mem16/mem32等。 (5) seg表示段寄存器,CS, DS, SS, ES, FS, GS。 (6) acc表示累加器,8/16/32累加器对应AL/AX/EAX。 (7)OF, SF, ZF, AF, PF, CF分别表示为O, S, Z, A, P, C,相应位置为:字母,根据结果状态设置;?,状态不确定;-,状态不变;1,置1;0,清0;例如:0 S Z ? P -表示:OF清0,AF不确定,CF不变,其它根据结果设置。若该栏空白,则表示无关。 (8)寄存器符号诸如(E)CX, (E)SI, (E)DI, (E)SP, (E)BP和(E)IP等,表示在16地址模式下使用16位寄存器(如CX),或在32地址模式下使用32位寄存器(如ECX)。 (9)周期数表示指令执行所需的CPU时钟周期个数,即执行时间为:周期数/主频(秒)。 (10)诸如(386+)是表示该指令只能用于80386及以后微处理器上。

·252·

附录 ·253·

·254·

附录 ·255·

·256·

汇编语言常用指令大全

1.通用数据传送指令. MOV----> move MOVSX---->extended move with sign data MOVZX---->extended move with zero data PUSH---->push POP---->pop PUSHA---->push all POPA---->pop all PUSHAD---->push all data POPAD---->pop all data BSWAP---->byte swap XCHG---->exchange CMPXCHG---->compare and change XADD---->exchange and add XLAT---->translate 2.输入输出端口传送指令. IN---->input OUT---->output 3.目的地址传送指令. LEA---->load effective address LDS---->load DS LES---->load ES LFS---->load FS LGS---->load GS LSS---->load SS 4.标志传送指令. LAHF---->load AH from flag SAHF---->save AH to flag PUSHF---->push flag POPF---->pop flag PUSHD---->push dflag POPD---->pop dflag 二、算术运算指令 ADD---->add ADC---->add with carry INC---->increase 1 AAA---->ascii add with adjust DAA---->decimal add with adjust SUB---->substract SBB---->substract with borrow DEC---->decrease 1 NEC---->negative CMP---->compare

汇编语言常见指令

“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(异或)

汇编语言指令及解释

常见汇编语言指令及解释#1常见汇编语言指令解释: 1.Rn表示R0~R7中的一个 2.#data表示8位的数值00H~FFH 3.direct表示8位的地址00H~FFH 4.#data1616位立即数 5.@Ri表示寄存器间接寻址只能是R0或者R1 6.@DPTR表示数据指针间接寻址,用于外部64k的RAM/ROM寻址 7.bit表示位地址 8.$表示当前地址 寄存器寻址MOV A,R1将R1中的数值赋予A 直接寻址MOV A,3AH将地址3AH中的数值赋予A 立即寻址MOV A,#3AH将3AH数值赋予A mov dptr,#1828h 寄存器间址MOV A,@Ri将Ri中地址的数值赋予A,Ri或是R0或是R1 MOV A,@DPTR 变址寻址MOVC A,@A+DPTR以A中的数值为地址偏移量进行查表;变址寻址区是程序存储器ROM,而不是数据存储器RAM 相对寻址AJMP MAIN跳转到行号为MAIN处 位寻址MOV C,7FH将位地址7FH的数值赋予C MOV C,2FH.7; MOV C,ACC.7 MOV A,#3AH数据传输、赋值命令 PUSH direct将direct为地址的数值压入堆栈中 POP direct将direct为地址的数值弹出堆栈 XCH A,direct将direct中的数值与A进行交换 ADD A,direct将direct中的数值与A中的数值相加 INC direct将direct中的数值加1 SUBB A,direct将A中的数值减去direct中的数值和Cy值,并保存在A中,如果想使用不带Cy减法,可以在运算前对Cy清零CLR C DEC direct将direct中的数值减1 DA A用于对BCD码加减法后进行10进制调整 MUL AB将A和B相乘,并把高八位放在B中,低八位放在A中 DIV AB将A和B相除,并把商的整数部分放在A中,余数放在B中 ANL A,direct将A与direct中的数值进行与运算,结果保留在A中(与运算规律:有0出0,全1出1) ORL A,direct将A与direct中的数值进行或运算,结果保留在A中(或运算规律:有1出1,全0出0) XRL A,direct将A与direct中的数值进行异或运算,结果保留在A中(异或运算规律:全0出0,全1出0,01、10出1) CLR A对A清零 CPL A对A取反 RL A对A中数左移RR A对A中数右移 RLC A对A中数带Cy左移 RRC A对A中数带Cy右移 SWAP A对A中的数高4位低4位互相交换 LJMP长跳转指令,64K地址范围 AJMP短跳转指令,2K地址范围 JZ rel如果A为0就跳转到rel行号处 JNZ rel如果A不为0就跳转到rel行号处 CJNE A,#data,rel如果A不等于data就跳转到rel行号处 DJNZ R1,rel如果R1减1后不为0就跳转到rel行号处ACALL rel调用rel子程序,2K地址以内 LCALL rel调用rel子程序,64K地址以内 RET子程序返回指令 RETI中断程序返回指令 NOP空操作指令 MOV C,bit将位地址bit中的值赋予C CLR bit将bit位地址清0 SETB bit将bit位地址置1 CPL bit将bit位地址取反 ANL C,bit将地址bit中的值和C做与运算,结果存放在C中 ORL C,bit将地址bit中的值和C做或运算,结果存放在C中 JC rel如果Cy为1,就跳转到rel行号处 JNC rel如果Cy为0,就跳转到rel行号处 JB bit,rel;若BIT=1则转移 JNB bit,rel;若BIT=0则转移 JBC bit,reL;若BIT=1则转移,且BIT置1 1加法指令: ADD A,Rn;ADD A,direct;ADD A,@Ri;ADD A,#DATA 2带CY的加法指令: ADDC A,Rn;ADDC A,direct;ADDC A,@Ri;ADDC A,#DATA 3加一指令: INC A;INC Rn;INC direct;INC@Ri;INC DPTR 4减法指令: SUBB A,Rn;SUBB A,direct;SUBB A,@Ri;SUBB A,#data 5减一指令:DEC A;DEC Rn;DEC direct;DEC@Ri 6十进制调整指令:DA A 7乘法和除法指令:MUL AB;乘积高八位放在B中,低八位放在A中 DIV AB;商的整数放在A中,余数放在B中 8逻辑异或:XRL A,Rn

相关文档
相关文档 最新文档