指令系统和汇编语言
- 格式:doc
- 大小:97.17 KB
- 文档页数:12
3·1 汇编指令第3 章MCS 一51 系列单片机的指令系统和汇编语言程序3·1·1 请说明机器语言、汇编语言、高级语言三者的主要区分,进一步说明为什么这三种语言缺一不行。
3·1·2 请总结:(1)汇编语言程序的优缺点和适用场合。
(2)学习微机原理课程时,为什么肯定要学汇编语言程序?3·1·3MCS 一51 系列单片机的寻址方式有哪儿种?请列表分析各种寻址方式的访问对象与寻址范围。
3·1·4 要访问片内RAM,可有哪几种寻址方式?3·1·5 要访问片外RAM,有哪几种寻址方式?3·1·6 要访问ROM,又有哪几种寻址方式?3·1·7 试按寻址方式对MCS 一51 系列单片机的各指令重进展归类(一般依据源操作数寻址方式归类,程序转移类指令例外)。
3·1·8 试分别针对51 子系列与52 子系列,说明MOV A,direct 指令与MOV A,@Rj 指令的访问范围。
3·1·9 传送类指令中哪几个小类是访问RAM 的?哪几个小类是访问ROM 的?为什么访问ROM 的指令那么少?CPU 访问ROM 多不多?什么时候需要访问ROM?3·1·10 试绘图示明MCS 一51 系列单片机数据传送类指令可满足的各种传送关系。
3·1·11 请选用指令,分别到达以下操作: (1)将累加器内容送工作存放器R6.(2)将累加器内容送片内RAM 的7BH 单元。
(3)将累加器内容送片外RAM 的7BH 单元。
(4)将累加器内容送片外RAM 的007BH 单元。
(5)将ROM007BH 单元内容送累加器。
3·1·12 区分以下指令的不同功能:(l)MOV A,#24H 与MOV A.24H(2)MOV A,R0 与MOV A,@R0(3)MOV A,@R0 与MOVX A,@R03·1·13 设片内RAM 30H 单元的内容为40H;片内RAM 40H 单元的内容为l0H;片内RAM l0H 单元的内容为00H;(Pl)=0CAH。
MIPS指令系统和汇编语言MIPS(Microprocessor without Interlocked Pipeline Stages)指令系统,是一种以RISC(Reduced Instruction Set Computer,精简指令集计算机)为基础的处理器架构。
作为一种广泛应用于嵌入式系统和计算机组成的指令集架构,MIPS指令系统以其简洁高效的特性而受到广泛关注和应用。
一、MIPS指令系统概述MIPS指令系统的设计目标之一是提高处理器的性能,并降低设计的复杂性。
它采用了统一的指令格式,包括操作码、源操作数以及目的操作数等字段,使得指令的译码和执行过程更加高效。
此外,MIPS的指令集还支持延迟槽、流水线和分支延迟等特性,以进一步提升指令执行的效率。
二、MIPS指令格式MIPS指令格式遵循统一的规则,包括三种基本类型的指令格式:R 型、I型和J型指令。
R型指令主要用于寄存器之间的操作,包括算术运算、逻辑运算等;I型指令用于立即数和寄存器之间的操作,涵盖了数据传输、分支跳转等功能;J型指令主要用于无条件跳转。
三、MIPS指令编码和寻址方式MIPS指令采用固定长度的指令编码格式,使得指令的解析和处理更加高效。
在寻址方面,MIPS支持多种寻址方式,包括立即寻址、寄存器寻址和间接寻址等。
这些灵活的寻址方式使得MIPS指令更加适用于不同的计算需求。
四、MIPS汇编语言MIPS汇编语言是一种用于编写MIPS指令的低级语言。
它是一种基于文本的表示形式,使用助记符来表示不同的指令和操作。
MIPS汇编语言具有简单易学的特性,更加接近底层硬件的工作原理,使得程序员可以更加精准地控制和优化程序的执行过程。
五、MIPS指令系统的应用由于MIPS指令系统的优越性能和灵活性,它被广泛应用于各种领域。
在嵌入式系统中,MIPS处理器可以实现高性能和低功耗的设计,广泛应用于智能手机、路由器、电视机等设备中。
在计算机组成和操作系统领域,MIPS指令系统被用于讲解和研究计算机的工作原理和底层机制。
第四章指令系统第一节操作数和寻址方式(P100)操作数类型:立即操作数寄存器操作数存储器操作数I/O端口操作数(P100)1.立即寻址源操作数为参与处理的数据——立即数,目操作数是寄存器或存储单元MOV DL,19H ;19H→(DL)MOV AX,3C8AH ;8AH→(AL),3CH→(AH)指令代码中立即数低8位放在低地址单元,高8位放在高地址单元。
2.直接寻址指令直接给出操作数所在存储单元地址。
MOV AL,[3C8AH] ;(3C8AH)→(AL), MOV AL,DS:[3C8AH]MOV AX,[3C8AH] ;(3C8AH)→(AL),(3C8BH)→(AH)存储单元隐含在数据段(DS),若对其他段操作,则应加段超越前缀(指令凡涉及存储单元均如此):MOV BX,ES:[2345H];((ES):2345H)→(BL),((ES):2346H)→(BH)。
直接地址能以变量名(符号)形式出现,此时方刮号[ ]可省略。
MOV AL,[V ALUE] 与MOV AL,V ALUE等同,V ALUE表示存储单元地址例:V ALUE DB 4AH……MOV AL,12HADD AL,V ALUE ;(AL)+(V ALUE)=12H+4AH=5CH→(AL)3.寄存器寻址由寄存器给出指令要处理的操作数。
MOV AX,5566H ;源操作数是立即寻址,目操作数是寄存器寻址MOV DI,AX ;(AX)→(DI)源目操作数均是寄存器寻址4.寄存器间接寻址由寄存器给出指令要处理的操作数所在存储单元的地址。
MOV BX,1122H ;1122H→(BX),立即数2345H送入SI寄存器MOV AX,[BX] ;((BX))=(1122H)→(AL)以BX内容为地址的存储单元((BX)+1)=(1123H)→(AH)内容送入AL,下一单元送AHADD CL,SS:[BX] ;(CL)+((SS):(BX))→(CL)可作寄存器间接寻址的寄存器指定为:BX,BP,SI,DI。
5.寄存器相对寻址操作数所在存储单元的地址由间址寄存器内容与8或16位相对位移地址之和产生。
MOV DX , [SI+68H] ;((SI )+68H )→(DL ),((SI )+1+68H )→(DH ) 相对位移地址亦可 以符号地址形式出现: MOV ABC[BX],AL ;(AL )→((BX )+ABC )ABC 表示一地址值6.基址—变址寻址操作数所在存储单元的地址由基址寄存器(BX 与BP 之一)内容加上变址寄存器(SI 与DI 之一)内容,或再加上8位或16位相对位移地址所得和形成。
MOV AL ,[1234H][BX][SI] ;((BX )+(SI )+1234H )→(AL )亦可写成 MOV AL ,[BX+SI+1234H]地址位移量亦可是符号形式:MOV AL ,ABC[BX+SI] 7.隐含寻址 指令不直接给出某操作数,但实际操作隐含了操作数所在位置。
MUL BL ;BL 是乘数,被乘数隐含在AL 中,(AL )×(BL )→(AX )XLAT ;((BX )+(AL ))→(AL )第二节 据传送指令一、 通用数据传送指令1、 寄存器 表示 16*(DS )+(DI )为物理地址,存贮单元 此存贮器以字为单位进行处理。
若改成BYTE PTR 则以字节为单位 字节: MOV AL ,‘E ’ MOV BYTE PTR [DI],3 字: MOV AX ,1234H MOV SI ,OFFSET TABLE ;取标号TABLE 对于段基址的偏移量作为立即数送SI2、 MOV r/m1,r/m2 ;该目操作数不能同时为存贮单元 寄存器←寄存器字节:MOV DL ,AH 字:MOV BP ,DX存贮单元← 寄存器—— 当r 为AX ,AL 时,编码比同类指令少一字节 字节:MOV [BX][DI],DL 字:MOV BOFFER ,AX寄存器←存贮单元—— 当r 为AX ,AL 时,编码比同类指令少一字节 字节:MOV CL ,CNTR 字:MOV SI ,ES :[BP];(SI ) (10H*(ES )+(BP ))3、 段寄存器{ CS 可操作,但实际一般不用 MOV seg ,r/m MOV r/m ,seg 例: MOV DS ,AX MOV BX ,ESMOV ES ,EXTR[BX] MOV DATA [BX+S1],DS}立即数 MOV m/r ,imm寄存器存贮单元二、交换指令 XCHG r1,r2/m注: r1,r2不准是段寄存器;允许作字节或字操作;不影响标志例1:XCHG BX,[BP+SI] (10H*(SS)+(BP)+(SI))《》(BX)例2:二个存贮单元之间数据交换:不能直接用一条指令完成二单元内容交换MOV AL,DA_BYTE1;(AL)←(DA_BYTE1)XCHG AL,DA_BYTE2;(AL)✐(DA_BYTE2)XCHG AL,DA_BYTE1;(AL)✐(DA_BYTE1)指令应用举例:用CX作计数器,将存贮器中标号S1开始的16个字节数据送到标号S2开始的存贮器。
MOV CX,10HMOV SI, OFFSET S1MOV DI, OFFSET S2LOP:MOV AL,[SI]MOV [DI], AL ;XCHG AL,[DI]INC SI ;(SI)←(SI)+1INC DI ;(DI)←(DI)+1LOOP LOP ;(CX)←(CX)-1,(CX)≠0,则跳到LOP处执行。
三、堆栈操作指令压入:PUSH SRC 以字为单位(SP)←(SP)-2;指针减2,((SP+1),(SP))←(SRC)源操作数送到减1后的SP指向的单元(低位字节)和下一个单元(高位字节)弹出:POP DST(DST)←((SP+1),(SP));弹出(SP)与(SP+2)指向的二个单元内容到DST, (SP)←(SP)+2(指针再加2);注:被压入和弹出的对象可以是通用寄存器、段寄存器(但POP CS理论上允许,而实际不允许),亦可以是存贮单元,但不能是立即数。
例:PUSH AX POP BETAPUSH CS POP SP; 8088允许目操作数是堆栈指针PUSH SP ;允许目操作数是堆栈指针 POP DS ;目允许是除CS之外段寄存器PUSH BETA POP AX四、换码指令 XLAT ;(AL)((BX)+(AL))用于查表:将表首址预置在BX中,AL中装待查信息,执行XLAT指令后,AL内容为查到的代码。
例:TAB DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00HMOV BX,OFFSET TABMOV AL,OCHXLAT TAB;TAB作提示用,可写可不写五、地址传送指令1、LEA reg,src (reg)← src(m偏移地址)16位通用寄存器 标号或地址表达式的有效地址EA例1:LEA BX,VAR1 ;相当于MOV BX,OFFSET VAR1;变量VRA1偏移地址值→(BX)例2:LEA SI,BETA[BP][ SI];(BP)+(SI)+BETA →(SI)E A不能用MOV SI,OFFSET BETA[BP][SI]代替。
OFFSET只能单独对变量名或标号发生作用,偏移地址包括BP,BX,SI,DI的值,第四节算术运算指令操作数为字或字节一.加法指令加法指令 ADD DST,SRC ; DST+SRC→DST带进位加法指令ADC DST,SRC ; DST+SRC-CY→DST自增指令 INC DST ; DST+1→DST根据相加结果影响标志OF,SF,ZF,AF,PF,CF。
INC指令不影响CF。
二.减法指令减法指令SUB DST,SRC ; DST-SRC→DST带借位减法指令SBB DST,SRC ; DST-SRC-CF→DST比较CMP DST,SRC ; DST-SRC自减指令DEC DST ; DST-1→DST取补(取负)指令NEG DST ; 0-DST→DST 操作数=0时CF=0,否则CF=1操作数=80H或8000H时取补后数值不变,且OF=1,否则OF=0;具体用变反加一实现。
例:(AL)=64H 执行NEG AL 指令后,(AL)=9CH SF=1 ZF=0 AF=1 OF=0 CF=1 PF=0·上述双操作数指令,操作数之一位r ,另一为r/m 。
根据相减结果影响标志OF ,SF ,ZF ,AF ,PF ,CF 。
·自增、自减指令,操作数为r/m 。
影响标志OF ,SF ,ZF ,AF ,PF ;不影响CF例1:设DATA1和DATA2均为3字节无符号数,试作加法运算,结果送DATA1。
——低位字节放低地址单元,高位字节放高地址单元。
DATA1 DB BAH ,AFH ,32H ,00H DATA2 DB 90H ,0AH ,84H ……MOV CX ,3 ;置循环计数值 MOV SI ,0 ;对多字节数据置处理字节位置 CLC ;清进位NEXT : MOV AL ,DATA2[SI] ;取数据DATA2当前字节→(AL )首次为最低ADC DATA1[SI],AL ;连同进位加到DATA1相应位置字节上INC SI ;字节位置增1 LOOP NEXT ;(CX ) ←(CX )-1 ,(CX )≠0转NEXTMOV AL ,0ADC DATA1[SI],AL ;最多字节运算产生的进位,x 再多一字节三、乘法指令1、无符号乘 MUL SRC 字节操作:(AX )←(AL )×SRC ;乘法除法指令SRC 不能是立即数,段寄存器字操作: (DX ,AX )←(AX )×SRC ; 运算结果高位字(节)为0时CF=OF=0,非0时CF=OF=1 2、带符号乘 IMUL SRC ;先取其绝对值相乘,再对结果加符号 字节操作:(AX )←(AL )×SRC ; 字操作: (DX ,AX )←(AX )×SRC运算结果高位字(节)为低位字(节)的符号扩展位时CF=OF=0,否则CF=OF=1例:已知(AL )=0FBH ,(BL )=03H 执行MUL BL 得(AX )=02F1H执行IMUL BL先取被乘数补码0FBH 的真值,为-5H ,作-5H ×3H=-0FH ;FBH × 3H 2F1H鉴于被乘数为负数,乘数为正数,乘积应为负数。
故取-000FH的补码0FFF1H→(AX)四、除法指令1、无符号除 DIV字节操作:(AX)/SRC 商→(AL),余数→(AH), SRC为零则产生类型0中断字操作:(DX,AX)/SRC 商→(AX),余数→(DX)被除数字长应是除数字长的两倍,若作8100H/0A00H,可将被除数高位字清零:MOV BX,0A00HMOV AX,8100HMOV DX,0 ;0→(DX)DIV BX ;(AX)=000CH,(DX)=0009H2、带符号除 IDIV字节操作:(AX)/SRC ;商→(AL),余数→(AH),商的符号取决与被除数与除数数符。