文档库 最新最全的文档下载
当前位置:文档库 › NEBS GR-1089 issue 6_Section 4-10

NEBS GR-1089 issue 6_Section 4-10

汇编语言调试DEBUG命令详解

汇编语言调试DEBUG命令详解 1、显示命令D ① D [地址] ② D [范围] 如不指定范围,一次显示8行×16个字节。 -D ;默认段寄存器为DS,当前偏移地址 -D DS:100 / -D CS:200 -D 200:100 -D 200;200为偏移地址,默认段寄存器DS -D DS:100 110/ -D 100 L 10 2.修改命令E ① E 地址;从指定地址开始,修改(或连续修改)存储单元内容。DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。 ② E 地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。 -E DS:100 F3 ‘AB’ 8D。 3.添充命令F F 范围数据表; 将数据表写入指定范围的存储单元;数据个数多,忽略多出的数据,个数少,则重复使用数据表。 -F DS:0 L5 01,02,03,04,05 -F DS:0 L5 01 02 03 04 05(空格分隔) -F DS:0 L5 FF ;5个字节重复使用FF 4.显示修改寄存器命令R R;★显示所有寄存器和标志位状态; ★显示当前CS:IP指向的指令。 显示标志时使用的符号: 标志标志=1 标志=0 OF OV NV DF DN UP IF EI DI SF NG PL ZF ZR NZ AF AC NA PF PE PO CF CY NC

5.汇编命令A A [地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:IP 开始(通常是CS:100)。 注释:①在DEBUG下编写简单程序即使用A命令。 ②每条指令后要按回车。 ③不输入指令按回车,或按Ctrl+C结束汇编。 ④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。 6.反汇编命令U ① U [地址];从指定地址开始反汇编32个字节的机器指令;省略地址时,则接着上一个U命令的最后一个单元开始;若第一次使用U命令省略地址,则从当前CS:IP开始(通常是CS:100)。 ② U 范围;对指定范围的单元进行反汇编。 -U -U100 -U100L10 7.运行程序命令G ① G;从CS:IP指向的指令开始执行程序,直到程序结束或遇到INT 3。 ② G=地址;从指定地址开始执行程序,直到程序结束或遇到INT 3。 ③ G 断点1[,断点2,…断点10];从CS:IP指向的指令开始执行程序,直到遇到断点。 ④G=地址断点1[,断点2,…断点10] -G ;从CS:IP指向的指令开始执行程序。 -G=100 ;从指定地址开始执行程序。 -G=100 105 110 120 8.跟踪命令(单步执行命令)T ① T;从当前IP开始执行一条指令。 ② T 数值;从当前IP开始执行多条指令。 ② T =地址; ③ T =地址数值; -T -T5 / -T=100 5 9.跟踪执行并跳过子程序命令P P [=地址] [数值];类似T命令,但跳过子程序和中断服务程序。 10.退出DEBUG命令Q Q;返回DOS环境。 -Q 11.命名命令N N 文件标示符;指定文件,以便用W命令在磁盘上生成该文件,或者用L命令从磁盘装入该文件。 -N MY_https://www.wendangku.net/doc/d210267627.html,

常用时序分析SDC 命令参考

常用时序分析SDC 命令参考(一) 1. Define design environment 1.1. Set_operating_conditions 1.2. Set_wire_load_model 1.3. Set_driving_cell 1.4. Set_load 1.5. Set_fanout_load 1.6. Set_min_library 2. Set design constraints 2.1. Design rule constraints 2.1.1. Set_max_transition 2.1.2. Set_max_fanout 2.1. 3. Set_max_capacitance 2.2. Design optimization constraints 2.2.1. create_clock 2.2.2. create_generated_clock 2.2. 3. Set_clock_latency 2.2.4. Set_propagated_clock 2.2.5. Set_clock_uncertainty 2.2.6. Set_input_delay 2.2.7. Set_output_delay 2.2.8. Set_max_area 3. Other commands 3.1. set_clock_groups 3.2. set_false_path 3.3. set_case_analysis 3.4. set_max_delay 1. Do not exist in timing fix SDC file: 1.1. Set_max_area 1.2. set_operation_conditions 1.3. set_wire_load_model 1.4. set_ideal_* 2. Must be placed in timing fix SDC file: 2.1. Set_clock_uncertainty, 2.2. set_max_transition 2.3. set_propagated_clock

微机原理与接口技术汇编语言指令详解吐血版

第一讲 第三章 指令系统--寻址方式 回顾: 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位偏移量包含在以下四个寄

系统指令分析

指令系统分析 一、指令系统概述: 指令系统是指某一种计算机所有指令的集合。对计算机而言,这是一组二进制数的输入,实际上是一组电平的输入。这些输入能在一个指令周期内产生人们预先规定的动作。显然这不是一组随机的二进制数据输入。指令系统是联系硬件和软件的桥梁。指令系统对计算机的作用相当于逻辑函数表对逻辑器件(门、触发器、加法器、移位寄存器)的作用。当然指令系统要比逻辑函数表复杂得多。一种计算机指令系统设计的好坏,往往标志着该计算机功能的强弱,计算机的设计往往先从设计它的指令系统开始。 二、指令格式: 指令由操作码和操作数两部分组成,操作数可以是要被操作的数据本身(立即数),也可以是数据所在单元的地址或寄存器。指令格式包括指令长度和指令内部信息的安排等。一条长指令通常可以分成几段存放和处理,每一段的长度与微处理机的字长相等。8位微处理机是以8位二进制数(字节)为基础,MCS-51单片机采用变长指令,有单字节、双字节和三字节三种指令格式。 一字节指令(49条) 这类指令的二进制代码既包含了操作码信息,又包含了操作数信息。有两种情况: 二字节指令(46条) 这类指令的第一字节为操作码,第二字节为操作数或操作数的地址。 三字节指令(16条) 这类指令的第一字节为操作码,后跟两个字节的操作数。 三、寻址方式: 每条指令存数或取数都需要知道如何获得该数据,如何产生操作数或其地址就称作寻址。指令的寻址方式是指如何获得操作数的方法,一个指令系统的寻址方式越多,计算机的功能越强,灵活性越大。所以寻址方式的多样性和灵活性是衡量计算机性能的一项重要指标。 MCS-51 单片机有七种寻址方式。 1.寄存器寻址(Register Addressing) 在指令中指出存放操作数的寄存器,因为寄存器在片内RAM中,所以其特点是速度快。如MOV A,R0,INC DPTR,MUL AB,DEC R7等。 寄存器包括32个工作寄存器(分4组)以及部分专用寄存器。指令只能使用当前寄存器组的8个通用寄存器R0~R7,对不同寄存器组可以通过PSW 中的RS0,RS1来选择。 2.直接寻址(Direct Addressing) 指令中给出操作数的8位直接地址,可用这种寻址方式的存储空间只限于内

《汇编语言》习题及解答

第1章基础知识 检测点(第9页) (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。 (2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。 (3)1KB的存储器可以存储8192(2^13)个bit,1024个Byte。 ~ (4)1GB是24(2^30)个Byte、1MB是1048576(2^20)个Byte、1KB是1024(2^10)个Byte。 (5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64(KB)、1(MB)、16(MB)、4(GB)。 (6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1(B)、1(B)、2(B)、2(B)、4(B)。 (7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。 (8)在存储器中,数据和程序以二进制形式存放。 解题过程: ' (1)1KB=1024B,8KB=1024B*8=2^N,N=13。 (2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。 (3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。 (4)1GB=24B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。 (5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。 (6)8根数据总线一次可以传送8位二进制数据(即一个字节)。 (7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。 (8)在存储器中指令和数据没有任何区别,都是二进制信息。

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

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

汇编语言期末考试试题及复习资料

汇编语言模拟试题及答案 一,单项选择题(在每小题的四个备选答案中,选出一个正确的答案,并将其号码填在题干后的括号内,每小题1分,共20分) 1.指令JMP FAR PTR DONE属于参考答案为:C A.段内转移直接寻址 B.段内转移间接寻址 C.段间转移直接寻址 D.段间转移间接寻址 [解析]略 2.下列叙述正确的是参考答案为:C A.对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令 B.对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令 C.对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL 指令 D.对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB 指令 [解析]对于无符号数和有符号数的比较都采用CMP指令; CMPS指令是串比较指令; 对两个无符号数的条件转移指令应是:JAE、JNB、JBE、JNA; 对两个有符号数的条件转移指令应是:JGE、JNL、JLE、JNG。 3.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区最末一个字单元的物理地址是参考答案为:C A.12CSBH B.12B6BH C.12C59H D.12BFEH [解析]末字与首字相隔(128-1=)127个字,且每个字占用2个字节,因此末字单元的物理地址应为: 首字单元的物理地址+(128-1)×2 即 12ABH×10H+00ABH+(128-1)×2=12C59H。 4.在下列指令的表示中,不正确的是参考答案为:C A.MOV AL,[BX+SI] B.JMP SHORT DONI C.DEC [BX] D.MUL CL [解析]当只有一个存储器操作数时,这个操作数的类型不明确,例如选项C中的[BX],没有明确的说明访问该存储单元的类型,此时存储器操作数就必须需用类型说明,如 DEC BYTE PTR [BX] 或 DEC WORD PTR [BX] 但是在题目的选项C中,没有指出存储器操作数类型,所以该指令是不正确的;而其它选项中的指令均是正确的。

Stata统计分析命令

Stata统计分析常用命令汇总 一、winsorize极端值处理 范围:一般在1%和99%分位做极端值处理,对于小于1%的数用1%的值赋值,对于大于99%的数用99%的值赋值。 1、Stata中的单变量极端值处理: stata 11.0,在命令窗口输入“findit winsor”后,系统弹出一个窗口,安装winsor模块 安装好模块之后,就可以调用winsor命令,命令格式:winsor var1, gen(new var) p(0.01) 或者在命令窗口中输入:ssc install winsor安装winsor命令。winsor命令不能进行批量处理。 2、批量进行winsorize极端值处理: 打开链接:https://www.wendangku.net/doc/d210267627.html,/judson.caskey/data.html,找到winsorizeJ,点击右键,另存为到stata中的ado/plus/目录下即可。命令格式:winsorizeJ var1var2var3,suffix(w)即可,这样会生成三个新变量,var1w var2w var3w,而且默认的是上下1%winsorize。如果要修改分位点,则写成如下格式:winsorizeJ var 1 var2 var3,suffix(w) cuts(5 95)。 3、Excel中的极端值处理:(略) winsor2 命令使用说明 简介:winsor2 winsorize or trim (if trim option is specified) the variables in varlist at particular percentiles specified by option cuts(# #). In defult, new variables will be generated with a suffix "_w" or "_tr", which can be changed by specifying suffix() option. The replace option replaces the variables with their winsorized or trimmed ones. 相比于winsor命令的改进: (1) 可以批量处理多个变量; (2) 不仅可以winsor,也可以trimming; (3) 附加了by() 选项,可以分组winsor 或trimming; (4) 增加了replace 选项,可以不必生成新变量,直接替换原变量。 范例: *- winsor at (p1 p99), get new variable "wage_w" . sysuse nlsw88, clear . winsor2 wage *- left-trimming at 2th percentile . winsor2 wage, cuts(2 100) trim *- winsor variables by (industry south), overwrite the old variables . winsor2 wage hours, replace by(industry south) 使用方法: 1. 请将winsor 2.ado 和winsor2.sthlp 放置于stata12\ado\base\w 文件夹下; 2. 输入help winsor2 可以查看帮助文件;

汇编语言指令分类详解

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之一中。可以 分成两种情况: (1)以SI、DI、BX间接寻址,则 通常操作数在现行数据段区域 中,即数据段寄存器(DS)*16 加上SI、DI、BX中的16位偏移 量,为操作数的地址, 例如:MOV AX,[SI] 操作数地址是:(DS)*16+(SI) (2)以寄存器BP间接寻址,则操作数在堆栈段区域中。即堆栈段寄存器(SS)*16与BP的内容相加作为操作数的地址, 例如:MOV AX,[BP] 操作数地址是:(SS)*16+(BP)若在指令中规定是段超越的,则BP的内容也可以与其它的段寄存器相加,形成操作数地址。 例如:MOV AX,DS:[BP] 操作数地址是:(DS)*16+(BP)5.变址寻址 由指定的寄存器内容,加上指令中给出的8位或16位偏移量(当然要由一个

汇编语言指令详解

练习题 1、8086CPU向0052H单元写入一个字,写入过程中BHE和A0的逻辑电平是()。 A、0和0 B、0和1 C、1和0 D、1和1 2、8086CPU用()信号的下降沿在T1结束时将地址信息锁存在地址锁存器中。 A、M/IO B、BHE C、ALE D、READY 3、下列8086CPU标志寄存器FR的标志位中,不属于状态标志位的 是( ) A、OF B、IF C、AF D、PF 4、8086CPU在进行读内存操作时,控制信号M/IO 和DT/R的状态是 ( ) A、00 B、01 C、10 D、11 5、当8086CPU采样到READY=0,则CPU将( ) A、执行停机指令 B、插入等待周期 C、执行空操作指 令 D、重新发送地址码 6、在8086CPU的标志寄存器中,控制标志位占() A、3位 B、9位 C、4位 D、16位 7、8086 CPU内有指示下条指令有效地址的指示器是() A、IP B、SP C、BP D、SI 8、现行数据段位于存储器B0000H到B0FFFH字节单元,则段寄存器

DS的内容及该段长度(字节数)分别为() A、B000H,1000H B、0000H,0FFFH C、B000H,0FFFH D、B000H,00FFH 9、指令MOV BX,[BP]中,约定的段寄存器是( ) A、ES B、SS C、DS D、CS 10、下列指令有语法错误的是() A、MOV [SI],[DI] B、IN AL,DX C、MOV AX,[0100H+BX+SI] D、PUSH BX 11、堆栈操作时,段内偏移量由()寄存器指出。 A、SP B、BP C、SI D、DI 12、地址总线的“宽度”决定了计算机系统内存的最大容量,8086有20根地址线,可寻址()字节的存储单元。 A、512K B、1M C、2M D、4M 13、条件转移指令JZ的测试条件() A、CF=0 B、CF=1 C、ZF=0 D、ZF=1 14、INC指令不影响()标志 A、OF B、CF C、ZF D、SF 15、寄存器间接寻址方式中,操作数在()中。 A、通用寄存器 B、堆栈 C、存储单元 D、段寄存器 16、假设(SS)=2000H,(SP)=0012H,(AX)=1234H,执行PUSH AX后,()=12H

ARM指令集分析

ARM指令集分析 株洲同为嵌入式培训中心作者:郭庆 版本2013.8.v0.1问题一:MOV指令中的立即数 1.1指令格式 指令的基本格式如下: {}{S},{,} 其中<>号内的项是必须的,{}号内的项是可选的。各项的说明如下 OPCODE:指令助记符; COND:执行条件; S:是否影响CPSR寄存器的值; RD:目标寄存器; RN:第1个操作数的寄存器; OPERAND2:第2个操作数;

MOV指令语法如下所示: MOV{COND}{S}RD,OP2 RD为目的操作数,OP2为源操作数。OP2可以是立即数,也可以是寄存器(有移位操作的或没有移位操作的),如果是立即数,那么立即数的范围是多少呢?如果是寄存器,那么寄存器如何移位呢? MOV指令的编码格式 [31:28]条件码 [25]指明第二操作数(OPERAND2)是立即数还是寄存器; [24:21]操作码,MOV指令的操作码为1101; [19:16]第一操作数,第一操作数只能是寄存器,MOV指令中没用到,默认为0000;[15:12]目的寄存器; [11:0]第二操作数,也就源操作数 条件码如下: 源操作数(OPERAND2)的分析 我们前面讲了源操作数有两种情况:立即数或寄存器。 1、源操作数为立即数 例1: AREA reset,CODE,READONLY ENTRY CODE32

mov R0,#0x55 mov R0,#0x3FC mov R0,#0x53000000 END 0x30000000E3A00055MOV R0,#0x00000055○1 0x30000004E3A00FFF MOV R0,#0x000003FC○2 0x30000008E3A00453MOV R0,#0x53000000○3 ,10x0000005520x000003FC 的区别在哪里呢? ○1E3A00055展开后11100011101000000000000001010101 1110:条件码(always),无条件码 00:这两位固定为0 1:表示第二个操作数是立即数, 1101:MOV的操作码是1101 0:对CPSR中符号位是否有影响0:表示无影响1:表示有影响 0000:第一个操作寄存器不存在 0000:目标寄存器的编号,0000表示R0,0001表示R1 000001010101:第二操作数 第二操作数是一个特殊格式,当第二操作数是立即数是,它由一个无符号的8位立即数和一个循环移位值构成,第二操作数=立即数>>(循环移位值*2)。 第二操作数是000001010101,其中0000为循环右移值,01010101为立即数。 因此第二操作数=0x55>>(0*2)=0x55; ○2E3A00FFF展开后11100011101000000000111111111111 111111111111:第二操作数 第二操作数111111111111很明显已经超出了8位立即数的表示范围,那这个值怎么表示呢? 0x3FC:00000000000000000000001111111100 可由11111111循环右移30位得到,依照第二操作数的格式,因此第二操作数的值为111111111111,即FFF ○3E3A00453展开后11100011101000000000010001010011 010*********:第二操作数 0x53000000:01010011000000000000000000000000 可由01010011循环右移(4*2)位实现 结论: 1)当立即数小于255时,不需要进行循环右移操作,也就是Rotate为0000,当立即数大于255是需要进行右移操作,并且是右移Rotate*2。 2)因为可以通过循环右移实现更大的立即数,但是有些立即数是不能通过循环右移实

汇编语言课后习题解答

第1章基础知识 检测点1.1(第9页) (1)1个CPU的寻址能力为8KB,那么它的地址总线的宽度为13位。 (2)1KB的存储器有1024个存储单元,存储单元的编号从0到1023。 (3)1KB的存储器可以存储8192(2^13)个bit,1024个Byte。 (4)1GB是1073741824(2^30)个Byte、1MB是1048576(2^20)个Byte、1KB是1024(2^10)个Byte。 (5)8080、8088、80296、80386的地址总线宽度分别为16根、20根、24根、32根,则它们的寻址能力分别为: 64(KB)、1(MB)、16(MB)、4(GB)。 (6)8080、8088、8086、80286、80386的数据总线宽度分别为8根、8根、16根、16根、32根。则它们一次可以传送的数据为: 1(B)、1(B)、2(B)、2(B)、4(B)。 (7)从内存中读取1024字节的数据,8086至少要读512次,80386至少要读256次。 (8)在存储器中,数据和程序以二进制形式存放。

(1)1KB=1024B,8KB=1024B*8=2^N,N=13。 (2)存储器的容量是以字节为最小单位来计算的,1KB=1024B。 (3)8Bit=1Byte,1024Byte=1KB(1KB=1024B=1024B*8Bit)。 (4)1GB=1073741824B(即2^30)1MB=1048576B(即2^20)1KB=1024B(即2^10)。(5)一个CPU有N根地址线,则可以说这个CPU的地址总线的宽度为N。这样的CPU 最多可以寻找2的N次方个内存单元。(一个内存单元=1Byte)。 (6)8根数据总线一次可以传送8位二进制数据(即一个字节)。 (7)8086的数据总线宽度为16根(即一次传送的数据为2B)1024B/2B=512,同理1024B/4B=256。 (8)在存储器中指令和数据没有任何区别,都是二进制信息。

(完整word版)汇编语言指令详解大全,推荐文档.doc

助记符指令说明字节数周期数 (数据传递类指令) MOV A, Rn 寄存器传送到累加器 1 1 MOV A, direct 直接地址传送到累加器 2 1 MOV A, @Ri 累加器传送到外部 RAM(8 地址 ) 1 1 MOV A, #data 立即数传送到累加器 2 1 MOV Rn, A 累加器传送到寄存器 1 1 MOV Rn, direct 直接地址传送到寄存器 2 2 MOV Rn, #data 累加器传送到直接地址 2 1 MOV direct , Rn 寄存器传送到直接地址 2 1 MOV direct , direct 直接地址传送到直接地址 3 2 MOV direct , A 累加器传送到直接地址 2 1 MOV direct , @Ri 间接 RAM 传送到直接地址 2 2 MOV direct , #data 立即数传送到直接地址 3 2 MOV @Ri, A 直接地址传送到直接地址 1 2 MOV @Ri, direct 直接地址传送到间接 RAM 2 1

MOV @Ri, #data 立即数传送到间接RAM MOV DPTR, #data16 16 位常数加载到数据指针 MOVC A, @A+DPTR 代码字节传送到累加器 MOVC A, @A+PC 代码字节传送到累加器 MOVX A, @Ri 外部 RAM(8 地址 ) 传送到累加器MOVX A, @DPTR 外部 RAM(16 地址 ) 传送到累加器MOVX @Ri, A 累加器传送到外部RAM(8 地址 ) MOVX @DPTR, A 累加器传送到外部RAM(16 地址 ) PUSH direct 直接地址压入堆栈 POP direct 直接地址弹出堆栈 XCH A,Rn 寄存器和累加器交换 XCH A, direct 直接地址和累加器交换 XCH A, @Ri 间接 RAM 和累加器交换 XCHD A, @Ri 间接 RAM 和累加器交换低 4 位字节 ( 算术运算类指令 ) 2 2 3 1 1 2 1 2 1 2 1 2 1 2 1 2 2 2 2 2 1 1 2 1 1 1 1 1 INC A累加器加11 1

汇编语言指令详解大全

汇编语言指令详解大全

助记符指令说明字节 数 周 期 数 (数据传递类指令) MOV A,Rn 寄存器传送到累加器 1 1 MOV A, direct 直接地址传送到累加 器 2 1 MOV A,@Ri 累加器传送到外部 RAM(8 地址) 1 1 MOV A,#data 立即数传送到累加器 2 1 MOV Rn,A 累加器传送到寄存器 1 1 MOV Rn, direct 直接地址传送到寄存 器 2 2 MOV Rn, #data 累加器传送到直接地 址 2 1 MOV direct, Rn 寄存器传送到直接地 址 2 1

MOV direct, direct 直接地址传送到直接 地址 3 2 MOV direct, A 累加器传送到直接地 址 2 1 MOV direct, @Ri 间接RAM 传送到直接 地址 2 2 MOV direct, #data 立即数传送到直接地 址 3 2 MOV @Ri,A 直接地址传送到直接 地址 1 2 MOV @Ri, direct 直接地址传送到间接 RAM 2 1 MOV @Ri, #data 立即数传送到间接 RAM 2 2 MOV DPTR, #data16 16 位常数加载到数 据指针 3 1 MOVC A, @A+DPTR 代码字节传送到累加 器 1 2

MOVC A,@A+PC 代码字节传送到累加 器 1 2 MOVX A,@Ri 外部RAM(8 地址)传 送到累加器 1 2 MOVX A,@DPTR 外部RAM(16 地址)传 送到累加器 1 2 MOVX @Ri,A 累加器传送到外部 RAM(8 地址) 1 2 MOVX @DPTR,A 累加器传送到外部 RAM(16 地址) 1 2 PUSH direct 直接地址压入堆栈 2 2 POP direct 直接地址弹出堆栈 2 2 XCH A,Rn 寄存器和累加器交换 1 1 XCH A, direct 直接地址和累加器交 换 2 1 XCH A, @Ri 间接RAM 和累加器交 换 1 1

指令分析及举例-RSLOGIX500

附录 第一章位指令 (2) 第一节数据文件 (3) 第二节位指令 (6) 第二章计时器和计数器指令 (11) 第三章比较指令 (21) 第四章算术指令 (26) 第五章传送和逻辑指令 (32) 第六章移位和顺序进出指令 (35) 第七章程序流程指令 (42) 第八章I/O,文件,PID指令 (46) 第九章高速计数指令 (64) 1

第一章位指令 位指令可对数据的单个位进行操作。在运行时,处理器可以根据其所在梯级的逻辑条件置位或复位一位。应用程序可以根据需要对一位寻址任意次。本章第一节介绍位指令地址可使用的数据文件,第二节介绍基本的位指令。 2

第一节数据文件 系统默认的数据文件分为以下几种类型: 1.输出和输入数据文件(O0:和I1:) 2.状态文件(S2:) 3.位文件(B3:) 4.计时器文件(T4:) 5.计数器文件(C5:) 6.控制文件(R6:) 7.整数文件(N7:) 上面的文件号也为系统默认的(即系统默认文件0为输出文件,1为输入文件,2为状态文件,等等)。下面对这些系统默认的文件类型分别予以介绍。 1.输出和输入数据文件(O0:和I1:) 文件O0中的各位表示外部的输出,文件I1中的各位表示外部的输入。在大多数情况下,这些文件中的每个16位字号与位于控制器内的一槽相对应,位号与相应的输入或输出端子号对应。 输出和输入的地址格式用e表示槽号,s表示字号。处理文件指令时,数据文件元素按 O:3/5 槽3,输出位5 I:7/8 槽7,输入位8 I:2.1/3 槽2,字1,输入位3 字地址: O:5 槽5,输出字0 O:5.1 槽5,输出字1 I:8 槽8,输入字0 特别的,当一个槽的I/O点数超过16个时,寻址位有两种表示方法:使用字、位寻址和直接位寻址。如:MicroLogix 1500系列输出0槽有64点。寻址O:0.2/13时,也可写为 3

汇编语言指令及解释

常见汇编语言指令及解释#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

汇编语言补充作业和答案分析解析

《微机系统与接口技术》汇编补充作业 2.指出下列8088指令的错误: (1)MOV AH, BX (2)MOV [BX], [SI] (3)MOV AX, [SI][DI] (4)MOV MYDAT[BX][SI], ES:AX (5)MOV BL, 1000 (6)MOV CS, AX (7)MOV DS, BP (8)XLAT BX (9)IN AX, 0382H (10)OUT AX, 20H 答:(1 )两个操作数长度不一致

(2 )两个操作数不能都是存储器操作数 (3 )变址寻址方式不能使用两个变址寄存器 (4 )寄存器寻址没有段超越用法 (5 )两个操作数长度不一致(或1000 超出字节数据范围) (6 )CS不能做目的寄存器 (7)段寄存器只能由通用寄存器对其操作,BP不能对通用寄存器进行操作(8 )XLAT 中BX是隐含操作数 (9 )IN指令中16 位端口地址要用DX作为操作数 (10)OUT指令两个操作数反了 3. 按要求编写下面的程序段 1)利用移位指令计算DX=3×AX+7×BX,假设为无符号数运算,无 进位。 2)用逻辑运算指令实现数字0~9的ASCII码与非压缩BCD码的互相 转换 3)把DX.AX中的双字右移4位 4)假设从4A00H:0000开始的4个字节中存放了4个非压缩的BCD 码,现在按照低地址对低位,高地址对高位的原则,将他们合并到 DX中。 答:1)MOV CX, AX SHL AX, 1 ; AX*2 ADD AX, CX ; AX*3 MOV DX, BX MOV CL, 3 SHL DX, CL ; BX*8 SUB DX, BX ; BX*7 ADD DX, AX 2)MOV AL, ’0’ LOP: AND AL, 0FH INC AL CMP AL, ‘:’ JNE LOP MOV AL, 0 LOP1: OR AL, 30H INC AL CMP AL, 0AH JNE LOP1

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