NO.5控制转移和程序结构(I)
2021年哈尔滨远东理工学院软件工程专业《计算机组成原理》科目期末试卷B(有答案)
2021年哈尔滨远东理工学院软件工程专业《计算机组成原理》科目期末试卷B(有答案)一、选择题1、假定主存地址为32位,按字节编址,主存和Cache之间采用直接映射方式,主存块大小为4个字,每字32位,采用写回(Write Back)方式,则能存放4K字数据的Cache的总容量的位数至少是()。
A.146KB.147KC.148KD.158K2、存储器采用部分译码法片选时,()。
A.不需要地址译码器B.不能充分利用存储器空间C.会产生地址重叠D.CPU的地址线全参与译码3、有如下C语言程序段:()short si=-32767;unsigned short usi=si;执行上述两条语句后,usi的值为A.-32767B.32767C.32768D.327694、十进制数-0.3125的8位移码编码为()。
A.D8HB.58HC.A8HD.28H5、float型数据通常用IEEE754标准中的单精度浮点数格式表示。
如果编译器将float型变量x分配在一个32位浮点寄存器FR1中,且x=-8.25,则FR1的内容是()。
A.C1040000HB.C2420000HC. C1840000HD.CIC20000H6、总线宽度与下列()有关。
A.控制线根数B.数据线根数C.地址线根数D.以上都不对7、为了对n个设备使用总线的请求进行仲裁,如果使用独立请求方式,则需要()根控制线。
A.nB.log2n+2C.2nD.38、假定编译器对高级语言的某条语句可以编译生成两种不同的指令序列,A、B和C三类指令的CPl和执行两种不同序列所含的三类指令条数见下表。
则以下结论错误的是()。
I.序列一比序列二少l条指令Ⅱ.序列一比序列二的执行速度快Ⅲ.序列一的总时钟周期数比序列二多1个Ⅳ.序列一的CPI比序列二的CPI大A.I、llB.1、ⅢC. ll、1VD.Ⅱ9、()可区分存储单元中在放的是指令还是数据。
A.存储器B.运算C.用户D.控制器10、在无转发机制的五段基本流水线(取指、译码/读寄存器、运算、访存、写回寄存器)中,下列指令序列存在数据冒险的指令对是()。
控制转移类指令.ppt
(IP)←标号的偏移地址 (CS)←标号的段地址 如果标号为本代码段内定义的标号,则该指令同JMP NEAR PTR lable。 说明: ① 也可直接使用数值表达式来给出目标地址,这时可省略FAR属性说明。 JMP 2000H:0100H ② 机器指令代码直接提供了转向地址的段地址和偏移地址,属于直接转 移方式。 ③ 使用绝对地址来表示转移目标地址,因此属于绝对转移。
(2)条件转移指令分为以下四类。
① 单标志位测试转移指令 通过测试单个标志位的状态来决定是否转移的指令。 例:
ADD AX,BX JC LAB1 ;如果 CF = 1,转至 LAB1
CMP CX,DX JE LAB2 ;如果 ZF = 1,转至 LAB2
② 无符号数比较转移指令
该类指令将参与比较的两个数据看作是无符号数,并根据比较运算后 标志位CF和ZF的状态来判断它们之间的大小关系,从而决定是否转移。 例:
说明:
① 8位位移量是带符号数,因此跳转的范围为( -128 --- +127 )。
② 指令中的转移目标地址用相对于当前IP所指向指令的相对位移量来 表示,因此属于相对转移。
例1:
0000H EB 04 0002H B0 01 0004H B3 02 0006H B1 03
┇
例2:
0000H B0 01 0002H B3 02 0004H B1 03 0006H EB F8 0008H B2 04
JBE/JNA 标 CF=1或ZF=1 号
JG/JNLE 标 SF⊕OF=0且
号
ZF=0
带符号数 比较转移
JGE/JNL 号
控制转移指令
;行号偏移量机器码程序
1 0000 CODE SEGMENT
2 ASSUME CS:CODE
3 0000 0405 PROG_S:ADD AL, 05H
4 0002 90 NOP
5 0003 EBFB JMP SHORT PROG_S
段内间接转移指令
这类指令转向的16位有效地址存放在一个16位寄存器或字存储单元中
用寄存器间接寻址的段内转移指令,要转向的有效地址存放在寄存器中,执行的操作是寄存器的内容送到IP中
例
JMP BX
若该指令执行前BX=4500H,则指令执行时,将当前IP修改成4500H,程序转到段内偏移地址为4500H处执行
返回地址的IP入栈
由于存放CALL指令的内存首地址为CS:IP=2000:1050H,该指令占3个字节,所以返回地址为2000:1053H,即IP=1053H.于是1053H被推入堆栈
根据当前IP值和位移量DISP计算出新的IP值,作为子程序的入口地址,即:
IP=IP+DISP=1053H+1234H=2287H
中断:INT—中断、INTO—溢出中断、IRET—中断返回
1、无条件转移和过程调用指令
1)JMP无条件转移指令
指令格式:JMP目的
指令功能:使程序无条件转移到指令中指定的目的地址去执行。
这类指令又分为两种类型:
第一种类型:段内转移或近(NEAR)转移,转移指令目的地址和JMP指令在同一代码段中,转移时仅改变IP寄存器的内容,段地址CS的值不变。
JMP DWORD PTR[SI+0125H]
设指令执行前,CS=1200H,IP=05H,DS=2500H,SI=1300H,内存单元(26425H)=4500H,(26427H)=32F0H.而指令中的位移量DISP=0125H,其中高位部分为DISP_H=01H,低位部分DISP_L=25H
单片机标准课程
《单片机原理与应用》课程标准1、课程概述课程名称:单片机原理及应用课程类型:专业核心课适用专业:电子信息工程课程编号:课程学时: 104 课程学分:4主用教材:苏艳萍主编单片机原理与应用国防科技大学出版社2、前言2.1.课程性质该课程是电类专业的必修课,是培养学生单片机基础应用能力和程序设计能力的核心课程,为专业培养适应于电子产品设计、电子产品检测维修、销售及技术服务第一线需要,具有较强电子技术应用能力,熟悉基于单片机电路的应用技术设计,又具有自动化设备安装、调试、维护能力和良好的职业素质的高素质技能型专门人才的培养目标服务。
本课程培养学生的MCS-51单片机的应用、电子电路分析、测试、制作与调试能力,仪器仪表的使用能力及创新意识,为后续智能电子产品设计与测试、设备的维护等打下坚实的基础。
本课程的前导课程有:《电工实训》、《电子实训》、《单片机应用技术》、《模拟电子技术》、《数字电子技术》。
2.2.课程设计理念及思路课程设计理念:课程的设计改变了学科体系模式,打破了原来学科体系的框架,将学科的内容按项目进行知识和技能的整合,力求体现“做中学”、“学中做”的教学理念。
内容的选择上本着够用、适用的原则,突出实际应用,注重培养学生的应用能力和解决问题的实际工作能力。
本课程的项目以职业实践活动为导向,以提高综合职业能力为核心,采用理论与实践一体化教学,培养学生的综合素质发展。
课程设计思路:注重培养学生分析问题、解决问题的能力,强化学生动手实践能力。
在内容组织形式上强调学生的主体性学习,将教学活动设计成若干项目或工作情景,以项目为单位组织教学,并以典型设备为载体,先提出学习目标,再进行任务分析,学生针对项目的各项任务进行相关知识的学习,然后进行项目实施以实现学习目标,最后根据多元化的评价标准进行多元评价。
通过项目实施,使学生在技能训练过程中加深对专业知识、技能的理解和应用,培养学生的综合职业能力,满足学生职业生涯发展的需要。
控制转移类指令
控制转移类指令✧用于实现分支、循环、过程等程序结构,是仅次于传送指令的最常用指令.✧控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变说明✧只有中断返回指令(IRET)改变控制标志位✧许多转移指令受状态标志位的影响1.无条件转移指令(JMP 操作数;程序转向label标号指定的地址)◆寻址方式:直接寻址方式转移地址象立即数一样,直接在指令的机器代码中,就是直接寻址方式间接寻址方式转移地址在寄存器或主存单元中,就是通过寄存器或存储器的间接寻址方式◆目标地址范围✓段内(注意转移范围是+ -,即前后都可以转移!当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位移量为负)✡段内转移——近转移(near)⏹转移范围用二个字节表达,在当前代码段64KB范围内转移(±32KB范围)⏹不需要更改CS段地址,只要改变IP偏移地址,由16位带符号数给出。
✡段内转移——短转移(short)⏹转移范围用一个字节表达,在当前代码段256B范围内转移(-128~+127范围),只改变IP的值,由8位带符号数给出。
✓段间段间转移——远转移(far)从当前代码段跳转到另一个代码段,可以在1MB范围需要更改CS段地址和IP偏移地址目标地址必须用一个32位数表达,叫做32位远指针,它就是逻辑地址。
段间间接转移指令中,目的地址存放在连续4个存储单元字节中,低字节两个单元的内容代替IP,高字节两个单元的内容代替CS。
注:实际编程时,汇编程序会根据目标地址的距离,自动处理成短转移、近转移或远转移程序员可用操作符short、near ptr或far ptr强制.✌思考:如果转移超过16BIT,怎么办?答:变成段间转移。
JMP 1234H 这个指令对否?JMP 12345678H呢?2、条件转移指令(Jcclable;条件满足,发生转移:IP←IP+8位位移量;条件不满足,顺序执行)注意:1.Jcc本身不是一条指令,它是条件转移指令的统称。
ABB机器人标准指令详解
ABB机器人标准指令详解一、 RAPID程序控制指令1、1程序开始/结束控制指令1) PROGRAM START/END1、指令格式: PROGRAM <程序名> <属性> ;2、描述:此指令标识一个机器人程序的开始或结束。
在这里,<程序名>是你给程序取的名字,<属性>是可选的,表示程序的属性(如:INTERLOCK, NO_INTERLOCK, NOPROGRAM等)。
2) JOB START/END1、指令格式: JOB <作业名> <属性> ;2、描述:此指令标识一个作业的开始或结束。
在这里,<作业名>是你给作业取的名字,<属性>是可选的,表示作业的属性(如:INTERLOCK, NO_INTERLOCK, NOPROGRAM等)。
1、2程序转移指令1) GOTO1、指令格式: GOTO <行号>;2、描述:此指令将程序执行转移到指定的行号。
2) GOSUB1、指令格式: GOSUB <行号>;2、描述:此指令将程序执行转移到指定的行号,并在返回时继续执行当前行。
3) RETURN1、指令格式: RETURN;2、描述:此指令将程序执行从 GOSUB转移到父程序,并从 GOTO转移到原程序行。
1、3条件判断指令1) IF/THEN/ELSE/ENDIF;1、指令格式: IF <条件> THEN <表达式> ELSE <表达式> ENDIF;2、描述:如果满足条件<条件>,则执行 THEN后面的表达式;否则执行 ELSE后面的表达式。
2) CASE/ESAC/ENDCASE;1、指令格式: CASE <变量> IN <表达式1> / <表达式2> /... / ENDCASE;2、描述:此指令根据变量<变量>的值选择要执行的表达式。
微机原理6_控制转移类指令
还可用SAR、ROR和RCR指令
;将AX的最低位D0移进CF
jnc even
;标志CF=0,即D0=0:AX内是偶数,程序转移
add ax,1
;标志CF=1,即D0=1:AX内的奇数,加1
even: shr ax,1
;AX←AX÷2
第2章:例题2.22解答3 用JNS指令实现
mov bx,ax
ror bx,1
done: ……
第2章:例2.24 偶校验
;对DL寄存器中8位数据进行偶校验 ;校验位存入CF标志
2:将最低位用移位指令移至进位标志,判断进位标志是0, AX就是偶数;否则,为奇数
3:将最低位用移位指令移至最高位(符号位),判断符号 标志是0,AX就是偶数;否则,为奇数
第2章:例题2.22解答1 用JZ指令实现
test ax,01h
;测试AX的最低位D0(不用AND指令,以免改变AX)
jz even
第2章:无条件转移指令JMP(jump)
JMP label
;段内转移、相对寻址
;IP←IP+位移量
演示
JMP r16/m16
;段内转移、间接寻址
;IP←r16/m16
演示 演示
JMP far ptr label ;段间转移、直接寻址
;IP←偏移地址,CS←段地址
演示
JMP far ptr mem ;段间转移,间接寻址
第2章:例题2.22
题目:将AX中存放的无符号数除以2,如果是奇 数则加1后除以2 问题:如何判断AX中的数据是奇数还是偶数? 解答:判断AX最低位是“0”(偶数),还是“1” (奇数)。可以用位操作类指令
1:用逻辑与指令将除最低位外的其他位变成0,保留最低位 不变。判断这个数据是0,AX就是偶数;否则,为奇数
3.5 控制转移和位操作指令(8)
2、条件转移指令 条件转移就是程序转移是有条件的。执行条件转移指 令时,如指令中规定的条件满足,则进行程序转移,否则 程序顺序执行。条件转移有如下指令: (1)累加器判零转移指令:JZ rel和 JNZ rel指令 这两条指令都是二字节指令,是有条件的相对转移指令, 以rel为偏移量。 (2)数值比较条件转移指令 数值比较条件转移指令把两个操作数进行比较,比较 结果作为条件来控制程序转移。共有四条指令: CJNE A,#data,rel;累加器内容与立即数不等转移 CJNE A,direct,rn ,#data,rel ;寄存器内容与立即数不等转移 CJNE @Ri,#data,rel ;内部RAM前128单元内容与立 即数不等转移。
汇编语言程序中,为等待中断或程序结束,常使程 序“原地踏步” ,对此可使用SJMP指令完成:HERE: SJMP HERE 或 HERE:SJMP $指令机器码为 80FEH。在汇编语言中,以“$”代表PC的当前值。 执行指令:L00P:SJMP L00P1,如果L00P的标 号值为0100H(即SJMP这条指令的机器码存于0100H 和0101H两个单元之中),标号L00P1值为0123H,即 跳转的目标地址为0123H,则指令的第二个字节(相对 偏移量)应为:rel=0123H一0102H=21H 。 (4)基址加变址寻址转移(变址转移)指令: JMP @A+DPTR ; (PC)←(A)+(DPTR) 这是一条一字节转移指令,转移的目的地址=(A) +(DPTR)。指令以DPTR内容为基址,而以A的内容 作变址。只要把DPTR的值固定,而给A赋以不同的值, 即可实现程序的多分支转移。键盘译码程序就是本指令 的一个典型应用。 (如P113例3.30)
2、位置位、复位指令 SETB C ; (Cy)←l SETB bit ; (bit)←1 CLR C ; (Cy)←0 CLR bit ; (bit)←0 3、位运算指令 ANL C,bit ; (Cy)←(Cy)∧(bit) ANL C,/ bit ; (Cy)←(Cy)∧/( bit ) ORL C,bit ; (Cy)←(Cy)∨(bit) ORL C,/ bit ; (Cy)←(Cy)∨/( bit ) CPL C ; (Cy)←/(Cy) CPL bit ; (bit)←/(bit)(P120例3.37) 4、位控制转移指令 位控制转移指令就是以位的状态作为实现程序转移的 判断条件。
控制转移类指令
MOV A,R7
RL A ;键值2倍,AJMP指令为双字节指令
MOV DPTR,#KEYG
JMP @A+DPTR
•••
KEYG: AJMP KEY0
KEYG+2: AJMP KEY1
•••
KEYG+30: AJMP KEY15
2.条件转移指令
条件转移指令是当满足给定条件时,程序转移到 目标地址去执行;条件不满足则顺序执行下一条 指令
用在中断服务程序的末尾 RETI与RET指令区别: RETI在返回的同
时同时释放中断逻辑
CJNE @Ri,#data,rel;
(PC)←(PC)+3 若data<((Ri)),(PC)←(PC)+rel且Cy←0; 若data>((Ri)),(PC)←(PC)+rel且Cy←1; 若data=((Ri)),顺序执行且Cy←0
例: MOV A, #40H
MOV R0,#10H
DJNZ direct,rel ;
(PC)←(PC)+3,(direct)←(direct)-1 当(diect)≠0时,(PC)←(PC)+rel; 当(direct)=0时,程序顺序执行。
注:操作数的内容先减1再判零,不等于0时转移
3.子程序调用
本指令完成两项操作:①把PC当前值压入堆栈;② 把子程序入口地址送PC。
⑴长调用指令 LCALL addr16 ;
(PC)←(PC)+3
(SP)←(SP)+1,((SP))←(PC)7~0;
(SP)←(SP)+1,((SP))←(PC)15~8;Biblioteka PC15~0←addr16
可编程控制器的基本知识
可编程控制器(Programmable Logic Controller,简称PLC)是一种数字运算操作的电子系统,专为在工业环境下应用而设计。
以下是一些关于可编程控制器的基本知识:
结构:可编程控制器由微处理器、存储器、输入/输出接口、电源等部分组成。
其中,微处理器是控制器的核心部件,实现各种逻辑运算、算术运算,并对整个控制系统的各个部分的工作进行协调与控制。
存储器用于存放系统程序、用户程序、逻辑变量、输入/输出状态的映像等数据信息。
输入/输出接口是与被控对象设备或周边其他控制器相互联系、交换信息与指令的通道。
电源为整个控制器的电力供给中心,包括内部电源和外部电源,分别用于控制器内部元件的工作用电和传送设备上各传感器信号、驱动设备的各种执行元件。
工作原理:以可编程控制器为核心加入各种辅助器件(传感器、驱动器件等)构成控制系统,以顺序+反馈的方式实现设备的自动化运转。
主要特点:抗干扰能力强,可靠性高;程序简单易学,系统的设计调试周期短;安装简单,维修方便;采用模块化结构,体积小,重量轻;丰富的I/O接口模块,扩展能力强。
应用范围:可编程控制器在工业控制领域应用广泛,包括顺序控制、计数和定时控制、位置控制、模拟量控制、数据处理、通信联网等方面。
总之,可编程控制器是一种功能强大的工业自动化控制器,其基本知识包括结构、工作原理、主要特点和应用范围等方面。
了解和掌握这些基本知识有助于更好地应用可编程控制器进行工业控制系统的设计和应用。
2.3.5控制转移指令
例:某温度控制系 统,采集的温度值 (Ta)放在累加器A 中,在内部RAM54H单 元存放温度下限值 (T54),在55H单元 存放温度上限值 (T55)。若Ta>T55, 程序转向JW(降温 处理程序);若 Ta<T54,则程序转向 SW(升温处理程序); 若T55≥Ta≥T54,则 程序转向FH(返回 主程序)。
在指令中提供了子程序入口地址的低11位,这 11位地址的a7~a0在指令的第二字节中,a10~a8 则占据第一字节的高3位。 为了实现子程序调用,该指令共完成两项操作: 断点保护 断点保护是通过自动方式的堆栈操作来实现的, 即把PC值自动送堆栈保存起来,待子程序返回时再送 回该PC值。 构造目的地址 目的地址的构造是在PC当前值的基础上以指令提 供的11位地址取代PC的低11位,而PC的高5位不变。
二、条件转移指令
条件所谓条件转移就是指程序转移是有条件的。 执行条件转移指令时,如指令中规定的条件满足, 则进行程序转移,否则程序顺序执行。 1、累加器判零转移指令
JZ rel ; 若(A)=0,则PC←(PC)+2+rel
若(A)≠0,则PC←(PC) +2 JNZ rel ; 若(A)≠0,则PC←(PC)+2+rel 若(A)=0,则PC←(PC)+2 这两条指令都是二字节指令,是有条件的相对转
(2) 长调用指令
LCALL addr16
给 出。指令执行后,断点进栈保存,调用addr16地址 的子程序。因此本指令的操作内容可表出为: PC←(PC)+3 SP←(SP)+1,(SP)←(PC)7-0 SP←(SP)+1,(SP)←(PC)15-8 PC15~0←addr16 本指令是三字节指令,调用地址在指令中直接
微机原理复习题
微机原理复习题第⼀章1计算机的硬件由哪⼏部分组成,各部分的作⽤是什么?答:计算机硬件由:运算器、控制器、存储器、输⼊/输出设备及接⼝组成。
(1)、运算器的主要功能是:完成算术运算和逻辑运算;(2)、控制器的功能是:协调指挥计算机各部件⼯作;(3)、存储器的主要作⽤是:存储程序和数据,实现记忆的功能。
(4)、输⼊设备的功能是:输⼊数据并转换为机内信息存储;(5)、输出设备的作⽤是:将机内信息转换为便于识别、处理和使⽤的字符、图形,并输出显⽰。
第⼆章1.8086CPU内部结构按功能可分为两部分:总线接⼝单元(BIU)和执⾏单元(EU)。
2.寄存器结构:通⽤寄存器:AX(AH,AL),BX(BH,BL),CX(CH,CL),DX(DH,DL)地址指针:SP,BP,SI,DI 段寄存器:CS,SS,ES,DS指令指针:IP 标志寄存器:FLAGS3. 8086的存储器组织及其寻址。
20条地址线,寻址1MB的存储单元,1MB分为两个库,每个库都是512K,分别是⾼位字节库(奇地址库),低位字节库(偶地址库)A19 - A1寻址每⼀个单元,A0和BHE(BHE上⾯有⼀条横线),选择访问哪个存储体。
4. 存储器分段结构。
8086CPU为了寻址1MB的存储空间,采⽤了分段的形式,即将1MB的存储空间分成若⼲个逻辑段,⽽4个当前逻辑段的基地址设置在CPU内的4个段寄存器中,即CS,DS,ES,SS.5.物理地址和逻辑地址。
物理地址是指CPU和存储器进⾏数据交换时实际所使⽤的地址,⽽逻辑地址是程序使⽤的地址。
物理地址由两部分组成:段基址和偏移地址。
段基址通常为段起始地址的⾼16位,存放在CS,DS,SS,ES中;⽽段内的偏移地址可以⽤16位通⽤寄存器BX,IP,BP,SP,SI,DI来存放。
6.8086的I/O端⼝。
8086系统和外部设备之间都是通过接⼝电路来联系的。
8086CPU利⽤AB的低16位作为对8位I/O端⼝的寻址线,8086系统访问的8位I/O端⼝最多有64K个,两个编号相邻的8位端⼝可以组合成⼀个16位的端⼝。
三章程序的控制结构
else
// 一般情况
{
delta = b*b-4*a*c;
p = -b/(2*a);
q = sqrt(fabs(delta))/(2*a);
if(delta >= 0)
// 实根情况
cout << "x1 = " << p+q << endl << "x2 = " << p-q << endl;
else
{
case 数值1: 语句序列1;
表达式的值等于?
case 数值2: 语句序列2;
数值1
数值2
数值3
case 数值3:
语句序列1 语句序列2
语句序列3
…
语句序列3;
...
default: 语句序列n;
图3.6 switch语句
}
其他 语句序列n
12
实现真正的多路选择
在每一个case模块的最后加上一个break语句
if(( a==0 ) && ( b==0 ) && ( c==0 )) // 最极端情况
cout << "方程的根可为任意值" << endl;
else if(( a==0 ) && (b != 0))
// 转换为一元一次方程情况
cout << "x1 = x2 = " << -c/b << endl;
10
例 3-3:求一元二次方程的根
#include <iostream>
PLC 5章 状态转移图及编程方法
状
S22 T0 K 50
态
T0
转
SET S23
移
S23
Y2
Y1
图
X3
的
SET S24
编
S24
Y1
Y2
程
X2
O U T S0
EN D
RET
5.2 单流程状态转移图的编程
下面对绘制步进梯形图的要点作一些说明:
(1) 状态必须用SET指令置位才具有步进控制功能,这时状态 才能提供STL触点。
(2) 状态转移图除了并联分支与联接的结构以外,STL触 点基本上都是与母线连接的,通过STL触点直接驱动线圈, 或通过其它触点来驱动线圈。线圈的通断由STL触点的通断 来决定。
信号绿灯亮绿灯闪亮黄灯亮红灯亮东西时间25信号红灯亮绿灯亮绿灯闪亮黄灯亮南北时间302系统配置根据信号控制要求io分配及其接线如图所示图中用一个输出点驱动两个信号灯如果plc输出点的输出电流不够可以用一个输出点驱动一个信号灯也可以在plc输出端增设中间继电器由中间继器再去驱动信号灯55编程实例x0y0y1y2y4y5y6启动东西绿灯东西黄灯东西红灯南北绿灯南北黄灯南北红灯3时序图十字路口交通信号灯控制的时序图按单流程编程如果把东西方向和南北方向信号灯的动作视为一个顺序动作过程其中每一个时序同时有两个输出一个输出控制东西方向的信号灯另一个输出控制南北方向的信号灯这样就可以按单流程进行编程其状态转移图如图所示对应的步进梯形图如图所示
LD M8002
SET
S0
STL
S0
LD
X0
SET
S20
STL
S20
LDI
Y2
OUT
Y1
LD
X1
SET
微机原理课程大纲
《微机原理》课程教学大纲一、课程名称(中英文)中文名称:微机原理英文名称:Principle of Microcomputer二、课程编码及性质课程编码:0800305课程性质:专业核心课,必修课三、学时与学分总学时:32学分:2.0四、先修课程电路理论、模拟电子技术、数字电子技术、C语言及其编程五、授课对象本课程面向材料成型及控制工程专业学生与电子封装技术专业学生开设,也可以供材料科学与工程专业选修。
六、课程教学目的(对学生知识、能力、素质培养的贡献和作用)《微机原理》是材料加工工程专业学生必修专业课程之一,其教学的主要目的包括:1、通过一门理论性、实践性和实用性很强的职业技能课程,增强学生的分析问题能力、编写程序能力与动手能力。
2、深入了解单片微型计算机的原理与结构,为今后成型设备开发打下牢固的理论基础。
3、系统掌握单片机的指令系统、接口技术和一般应用开发方法,为今后设计实际的单片机应用系统打下牢固的理论基础。
4、了解微型计算机技术的发展前沿,掌握其发展特点与动向,具备研发单片机的基础与能力。
七、教学重点与难点:教学重点:1)当今计算机技术飞速发展,本课程以介绍单片微型计算机中最典型的8051为主体、以讲述单片机结构与应用为重点;2)在全面了解与掌握单片微型计算机种类及结构特点的基础上,重点学习汇编语言开发单片微型计算机技术;3)课程将重点或详细介绍新颖的流行的微型控制器及其开发方法,为同学提供更多的实践机会;4)重点学习的章节内容包括:第2章“单片机的结构和原理”(4学时)、第3章“单片机的指令系统”(4学时)、第4章“汇编语言程序设计基础”(8 学时)、第6章“单片机的定时/计数器”(8学时)。
教学难点:1)单片机原理与接口技术课程是实践性极强的课程之一,本课程将密切结合学生的生产实习、课程设置、实验课等实践环节,培养学生对单片微型计算机的认识及设计能力,提高授课质量与效果。
2)通过本课程学习,要求掌握单片微型计算机中的工作原理、结构特点、应用范围、控制方法等,具备合理开发单片微型计算机实践的能力。
控制转移与程序结构精品文档
条件转移指令Jcc
根据指定的条件确定程序是否发生转移
Jcc label
;条件满足,发生转移;否则,顺序执行下一条指令
LABEL表示目标地址,采用段内相对寻址方式
•16位80x86微处理器:只是-128~+127间的短转移 •32位IA-32微处理器:达到32位的全偏移量
条件转移指令不影响标志,但要利用标志
直接寻址方式
• 直接提供目标地址 • 目标地址(转移后的CS和EIP)=指令操作数
间接寻址方式
• 指示寄存器或存储单元 • 目标地址来自寄存器或存储单元、间接获得 • 寄存器间接寻址:用寄存器保存目标地址 • 存储器间接寻址:用存储单元保存目标地址
5
钱晓捷,微型计算机原理及应用,清华大学出版社,2006
目标地址=目的地址=转移地址
3
钱晓捷,微型计算机原理及应用,清华大学出版社,2006
转移范围
段内转移
•在当前代码段范围内的程序转移 •不需更改CS,只要改变EIP(偏移地址) •近转移(Near):16位段中是16位近转移NEAR16,
32位段中是32位近转移NEAR32
•短转移(Short):转移范围在127~-128字节
MASM会根据存储模式等信息自动识别
7
钱晓捷,微型计算机原理及应用,清华大学出版社,2006
[例题5-1]无条件转移程序-1
;数据段
0000 0000 nvar dw ?
;代码段
0010 EB 01
jmp labl1
相对短转移
0012 90
nop
0013 B8 FF02
labl1:
mov ax,type labl1
程序的三种基本结构
• case 常量表达式2:语句2
• case 常量表达式i:语句n
• default
:语句n+1
•}
功能
首先计算表达式的值,然后依次与常量表达式 i(i=1,2,……,n)比较。 ① 若表达式的值与某一个常量表达式, 如 j (1 ≤j ≤ n)相等,则执行语句 j。 ② 若表达式的值与所有的常量表达式 i(i=1,2,……,n)均不
{ int x,y;
scanf(“%d,%d”,&x,&y);
if(x>y)
x=y; y=x; else
Compile Error!
x++; y++;
printf(“%d,%d\n”,x,y);
}
5.1.2 if语句嵌套
一般形式:
if (expr1) if (expr2) statement1 else statement2
• 5.1 if 条件语句 • 5.2 switch多分支选择语句 • 5.3 程序举例
返回
5.1 if条件语句
•if语句是用来判定所给定的条件是否满足,根据判定的结果(真或假)决定 执行给出的两种操作之一。
5.1.1 if语句的三种形式
•1.单分支选择语句的形式: if(表达式) 语句
•
main( )
内嵌if
else
if(expr3) else
statement3 statement4
内嵌if
例 输入两数并判断其大小关系
/*ch4_4.c*/
#include <stdio.h>
main()
{ int x,y;
运行:Enter integer x,y:12,23
IL指令详细
IL指令详细名称说明Add将两个值相加并将结果推送到计算堆栈上。
Add.Ovf将两个整数相加,执⾏溢出检查,并且将结果推送到计算堆栈上。
Add.Ovf.Un将两个⽆符号整数值相加,执⾏溢出检查,并且将结果推送到计算堆栈上。
And计算两个值的按位“与”并将结果推送到计算堆栈上。
Arglist返回指向当前⽅法的参数列表的⾮托管指针。
Beq如果两个值相等,则将控制转移到⽬标指令。
Beq.S如果两个值相等,则将控制转移到⽬标指令(短格式)。
Bge如果第⼀个值⼤于或等于第⼆个值,则将控制转移到⽬标指令。
Bge.S如果第⼀个值⼤于或等于第⼆个值,则将控制转移到⽬标指令(短格式)。
Bge.Un当⽐较⽆符号整数值或不可排序的浮点型值时,如果第⼀个值⼤于第⼆个值,则将控制转移到⽬标指令。
Bge.Un.S当⽐较⽆符号整数值或不可排序的浮点型值时,如果第⼀个值⼤于第⼆个值,则将控制转移到⽬标指令(短格式)。
Bgt如果第⼀个值⼤于第⼆个值,则将控制转移到⽬标指令。
Bgt.S如果第⼀个值⼤于第⼆个值,则将控制转移到⽬标指令(短格式)。
Bgt.Un当⽐较⽆符号整数值或不可排序的浮点型值时,如果第⼀个值⼤于第⼆个值,则将控制转移到⽬标指令。
Bgt.Un.S当⽐较⽆符号整数值或不可排序的浮点型值时,如果第⼀个值⼤于第⼆个值,则将控制转移到⽬标指令(短格式)。
Ble如果第⼀个值⼩于或等于第⼆个值,则将控制转移到⽬标指令。
Ble.S如果第⼀个值⼩于或等于第⼆个值,则将控制转移到⽬标指令(短格式)。
Ble.Un当⽐较⽆符号整数值或不可排序的浮点型值时,如果第⼀个值⼩于或等于第⼆个值,则将控制转移到⽬标指令。
Ble.Un.S当⽐较⽆符号整数值或不可排序的浮点值时,如果第⼀个值⼩于或等于第⼆个值,则将控制权转移到⽬标指令(短格式)。
Blt如果第⼀个值⼩于第⼆个值,则将控制转移到⽬标指令。
Blt.S如果第⼀个值⼩于第⼆个值,则将控制转移到⽬标指令(短格式)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
JMP指令的4种类型
1. 段内转移、相对寻址 • 标号指明目标地址,指令代码包含位移量 2. 段内转移、间接寻址 • 通用寄存器或主存单元包含目标指令的偏移 地址 MASM会根据存储模式等信息自动识别 3. 段间转移、直接寻址 • 标号包含目标指令的段地址和偏移地址 4. 段间转移、间接寻址 • 16位段用双字存储单元包含目标地址 • 32位段用3字存储单元包含目标地址
[例题5-2]实现指令CBW功能的程序-2
mov al,bvar ;取出要判断的数据 test al,80h ;测试最高位 等于零转移 jz next1 ;最高位为0(ZF=1),转移到标号NEXT1 mov ah,0ffh ;最高位为1,顺序执行:设置AH=FFH jmp done ;无条件跳过另一个分支 mov ah,0 ;最高位为0转移到此执行:设置AH=0
[例题5-1]无条件转移程序-1
0000 0000 nvar
0010 EB 01 0012 90 0013 B8 FF02 labl1: 0016 E9 0001 0019 90 001A B8 0020 R labl2: 001D FF E0 001F 90 0020 B8 002B R labl3: 0023 A3 0000 R 0026 FF 26 0000 R 002A 90 ;数据段 dw ? ;代码段 jmp labl1 相对短转移 nop mov ax,type labl1 jmp near ptr labl2 nop 相对近转移 mov ax,offset labl3 jmp ax 寄存器间接近转移 nop mov ax,offset labl4 mov nvar,ax jmp nvar 存储器间接近转移 nop
5.2.1条件转移指令Jcc
• 根据指定的条件确定程序是否发生转移 Jcc label ;条件满足,发生转移;否则,顺序执行下一条指令 • LABEL表示目标地址,采用段内相对寻址方式 • 16位80x86微处理器:只是-128~+127间的短转移 • 32位IA-32微处理器:达到32位的全偏移量 • 条件转移指令不影响标志,但要利用标志 • cc表示利用标志判断的条件,16种、两类 • 单个标志状态作为条件 • 两数大小关系作为条件
next2: done:
jnp done
何不合二为一
[例题5-4]统计“1”位个数程序-1
mov ah,1 int 21h ;输入一个字符 xor ah,ah ;用AH寄存器记录1的个数,故先清0 mov ecx,8 ;ASCII码有8位,进行8次循环判断 shl al,1 ;从高位开始 jnc next ;不为1,无需处理 inc ah ;为1,个数加1 loop again
[例题5-3]实现奇校验程序-2
mov ah,1 ;1号功能 int 21h ;键盘输入,返回值在AL 个数为奇数转移 and al,7fh ;最高位置“0”,标志PF反映“1”的个数 jnp next1 ;个数为奇数,则转向NEXT1 or al,80h ;最高位置“1”、其他位不变 mov Tdata,al ;保存待发送的数据 功能编号 AH=01H 出口参数 AL=ASCII字符
5.1.3无条件转移指令
• 无条件转移:程序无条件改变执行顺序 • JMP指令相当于高级语言的goto语句 JMP label ;程序转向label标号指定的地址 ;段内相对寻址,段间直接寻址 JMP reg16/reg32 ;程序转向寄存器指定的地址 ;寄存器间接寻址 JMP mem16/mem32 ;程序转向存储单元指定的地址 ;存储器间接寻址
again:
next:
[例题5-4]统计“1”位个数程序-2
mov ah,1 int 21h ;输入一个字符 xor ah,ah ;用AH寄存器记录1的个数,故先清0 cmp al,0 ;也可用“TEST AL,0FFH” je done shr al,1 ;从低位开始 jnc next ;不为1,无须处理 inc ah ;为1,个数加1 jmp again
转移条件cc:单个标志状态
JZ/JE JNZ/JNE JS JNS JP/JPE JNP/JPO JO JNO JC JNC ZF=1 ZF=0 SF=1 SF=0 PF=1 PF=0 OF=1 OF=0 CF=1 CF=0 Jump if Zero/Equal Jump if Not Zero/Not Equal Jump if Sign Jump if Not Sign Jump if Parity/Parity Even Jump if Not Parity/Parity Odd Jump if Overflow Jump if Not Overflow Jump if Carry Jump if Not Carry
5.1.2寻址方式
• 相对寻址方式 • 提供目标地址相对于当前指令指针EIP的位移量 • 目标地址(转移后的EIP)=当前EIP+位移量 • 相对寻址都是段内转移,最常用、最灵活 • 直接寻址方式 • 直接提供目标地址 • 目标地址(转移后的CS和EIP)=指令操作数 • 间接寻址方式 • 指示寄存器或存储单元 • 目标地址来自寄存器或存储单元、间接获得 • 寄存器间接寻址:用寄存器保存目标地址 • 存储器间接寻址:用存储单元保存目标地址
5.1 目标地址寻址方式
• 程序代码在代码段 • CS:指明代码段在主存中的开始位置、即段基地址 • EIP:给出将要执行指令的偏移地址 • 程序顺序执行,微处理器自动增量EIP • 程序控制转移,EIP随之改变 • 程序转移到另外的代码段, EIP和CS都将改变 • 控制转移类指令:改变EIP(有些也改变CS),即改 变程序执行顺序(实现程序控制转移)的指令 • 目标地址寻址方式:改变CS和EIP寄存器,或者说如 何指明目的地、即目标地址的方法 目标地址=目的地址=转移地址
转移条件cc:两数大小关系
JB/JNAE CF=1 Jump if Below/Not Above or Equal JNB/JAE CF=0 Jump if Not Below/Above or Equal JBE/JNA CF=1或ZF=1 Jump if Below/Not Above JNBE/JA CF=0且ZF=0 Jump if Not Below or Equal/Above JL/JNGE JNL/JGE JLE/JNG JNLE/JG SF≠OF Jump if Less/Not Greater or Equal SF=OF Jump if Not Less/Greater or Equal ZF≠OF或ZF=1Jump if Less or Equal/Not Greater SF=OF且ZF=0 Jump if Not Less or Equal/Greater
next1:
ቤተ መጻሕፍቲ ባይዱ
功能说明 键盘输入一个字符(回显)
[例题5-3]实现奇偶校验程序-3
mov ah,1 ;1号功能 int 21h ;键盘输入,返回值在AL 个数为偶数转移 and al,7fh ;最高位置“0”,标志PF反映“1”的个数 jp next2 ;个数为偶数,转向NEXT2 jmp done ;个数为奇数,转向保存 or al,80h ;最高位置“1”、其他位不变 mov Tdata,al ;保存待发送的数据
next3: done:
[例题5-3]实现奇偶校验程序-1
• 奇偶校验是数据通信、存储等过程中最常用的 校验方法 • 奇校验:使包括校验位在内的数据中为“1”的 个数恒为奇数 • 偶校验:使包括校验位在内的数据中为“1”的 个数恒为偶数(包括0) • 奇偶校验只能检测出奇数个位出错的情况,不 能纠错 • 实现奇偶校验非常简单 • 硬件上使用异或等电路 • 软件上使用异或等指令,奇偶校验标志PF
next2: done:
[例题5-2]实现指令CBW功能的程序-4
mov al,bvar ;取出要判断的数据 cmp al,0 ;与0比较 符号为正转移 jns next3 ;最高位为0(SF=0),转移到标号NEXT3 mov ah,0ffh ;最高位为1,顺序执行:设置AH=FFH jmp done ;无条件跳过另一个分支 mov ah,0 ;最高位为0转移到此执行:设置AH=00H
next1: done:
[例题5-2]实现指令CBW功能的程序-3
mov al,bvar ;取出要判断的数据 test al,80h ;测试最高位 不等于零转移 jnz next2 ;最高位为1(ZF=0),转移到标号NEXT2 mov ah,0 ;最高位为0,顺序执行:设置AH=00H jmp done ;无条件跳过另一个分支 mov ah,0ffh ;最高位为1转移到此执行:设置AH=FFH
002B B8 FF05 labl4: 002E EA ---- 0034 R 0033 90 0034 B8 0047 R labl5: 0037 A3 0002 R 003A BA ---- R 003D 89 16 0004 R 0041 FF 2E 0002 R 0045 90 0046
5.2分支程序结构
[例题5-2]实现指令CBW功能的程序-1
• 8086指令CBW(等于IA-32指令MOVSX AX,AL) • 如果AL最高位为0,则设置AH=0 • 如果AL最高位为1,则设置AH=FFH • 如何判断AL最高位是“0”,还是“1” • 涉及一个位,可采用位操作类指令 • 保留最高位不变,其他位变成0 • 逻辑与“80H”结果为0,AL最高位=0;否则 是1 • 运算结果是否为0,零位标志ZF反映 • JZ或JNZ指令判断并转移 TEST指令生成条件
上节内容回顾
• • • • • • • • • • 寄存器相对寻址、 基址变址、 相对基址变址、 带比例存储器寻址 XCHG,XLAT;NEG,CMP,LEA, MUL,IMUL AND,OR,XOR,TEST SHL/SAL,SHR/SAR;ROL/ROR,RCL/RCR CLC,STC;CLD,STD; MOVS,STOS,REP