《微机原理与接口精品文稿.ppt》由会员分享,可在线阅读,更多相关《微机原理与接口精品文稿.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、微机原理与接口课件第1页,本讲稿共32页计算机计算机程序程序设计语言设计语言 3.1程序设计语言与汇编语言程序设计语言与汇编语言机器语言、汇编语言和高级语言机器语言、汇编语言和高级语言高级语言(高级语言(High Level Language):通用,一般不要求了解通用,一般不要求了解结构原理。易读,易编写,调试,简洁结构原理。易读,易编写,调试,简洁BASIC,.,VC(+)/VB/DELPHI,JAVA,C#,HTML =机器语言(执行)机器语言(执行)-翻译翻译/编译编译 解释程序(解释程序(Interpreter)/编译程序(编译程序(Compiler)(编译原理)(编译原理)C+编译
2、编译真实指令真实指令 JAVA编译编译 Java bytecode中间代码中间代码虚拟机指令虚拟机指令JAVA解释器解释器2第2页,本讲稿共32页程序设计语言与汇编语言程序设计语言与汇编语言(2)汇编语言汇编语言(Assembly Language)-面向具体机器(面向具体机器(CPU)语言)语言,最接近于机器最接近于机器语言的低级语言。借助于助记符编程,地址数据可符号化(可读性提高),编写、修语言的低级语言。借助于助记符编程,地址数据可符号化(可读性提高),编写、修改较方便。完整的语法,不易出错。例:改较方便。完整的语法,不易出错。例:ADD AX,100 (05 64 00)JMP 100
3、0:2000 (EA 00 20 00 10)特点:特点:汇编语言程序汇编语言程序-机器代码一一对应,程序流可控,速度快,用于编制系统程序、机器代码一一对应,程序流可控,速度快,用于编制系统程序、实时通信实时通信/控制控制/处理。处理。-面向具体机器(面向具体机器(CPU)语言,移植性差,不通用。)语言,移植性差,不通用。汇编(汇编(Assemble)源程序代码源程序代码机器语言代码(目标程序)的过程。机器语言代码(目标程序)的过程。功能:功能:语法检查、翻译。汇编程序语法检查、翻译。汇编程序Assembler机器汇编(机器汇编(人工汇编)。交叉人工汇编)。交叉汇编汇编借助其它机器(如借助其它
4、机器(如PC)汇编。汇编。反汇编(反汇编(Dis-Assemble)机器语言代码机器语言代码指令指令代码(源程序代码(源程序),逆向工程逆向工程Reverse Engineering)机器语言机器语言 二进制表示的指令和数据序列目标代码二进制表示的指令和数据序列目标代码3第3页,本讲稿共32页汇编程序获取汇编程序获取(1)机器码机器码Disassemble Sourcer /debuger (2)C ASM CL /Fa开关开关;TCC-B ;(3)ASM 编程编程 (高级语言嵌入小汇编程序模块高级语言嵌入小汇编程序模块)MASM TASM ASM;汇编程序(汇编程序(MS-MASM 4.0/
5、5.0 6.11/6.14/6.15)ASM86(小,无宏小,无宏MICRO支持支持)TASM5.0)汇编程序用途汇编程序用途 程序设计语言与汇编语言程序设计语言与汇编语言(3)4第4页,本讲稿共32页 DATA SEGMENT ;定义数据段定义数据段 DATA1 DB 0F8H,60H,0ACH,74H,3BH;被加数被加数 DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数加数 DATA ENDS;数据段结束数据段结束 CODE SEGMENT;定义代码段定义代码段 ASSUME CS:CODE,DS:DATA;告诉汇编程序段范围告诉汇编程序段范围 START:MOV AX
6、,DATA MOV DS,AX ;初始化初始化DS MOV CX,5 ;循环次数送循环次数送CX MOV SI,0 ;置置SI初值为零初值为零 3.2 汇编语言源程序格式汇编语言源程序格式段名段名段说明保留字段说明保留字标号标号5第5页,本讲稿共32页 汇编语言源程序格式(例汇编语言源程序格式(例1续)续)CLC ;清清CF标志标志LOOPER:MOV AL,DATA2SI;取一个字节加数取一个字节加数 ADC DATA1SI,AL;与被加数相加与被加数相加 INC SI ;SI加加1指向下一字节指向下一字节 DEC CX;计数器计数器CX减减1 JNZ LOOPER;不等于零,转不等于零,转
7、LOOPER (HLT);停止停止-实际?实际?(INT21H)CODE ENDS ;代码段结束代码段结束 END START;源程序结束,指定起始地址标号源程序结束,指定起始地址标号6第6页,本讲稿共32页 汇编语言源程序格式(例汇编语言源程序格式(例2)(PC台式计算机在台式计算机在MS-DOS环境下的标准程序格式)环境下的标准程序格式)MAIN PROC FAR ;MS-DOS 模板语句模板语句PUSH DS XOR AX,AX ;=MOV AX,0 PUSH AX ;保存返回指针保存返回指针START:MOV AX,DATA MOV DS,AX :RET ;返回原返回原DS:0000H
8、MS-DOSMAIN ENDP7第7页,本讲稿共32页 汇编语言源程序格式(详解汇编语言源程序格式(详解1)分段结构分段结构 指定堆栈、数据、代码段指定堆栈、数据、代码段-SEGMENT-ENDS-(END结束?)结束?)?当前物理段(?当前物理段(SS/CS/DS/ES)-运行运行/逻辑段逻辑段编程编程 程序语句的类型和组成程序语句的类型和组成基本单元:语句基本单元:语句指令性语句指令性语句-CPU指令指令 指示性语句指示性语句-伪操作(汇编辅助信息)伪操作(汇编辅助信息)语句构成:语句构成:name Opcode/伪操作伪操作 操作数操作数 ;注释;注释 label:mnemonic op
9、erand ,operand ;commentLOOP1:mov al,DATA2SI (指令)(指令)DATA1DB 0ffh,80h,12h (伪操作伪操作)8第8页,本讲稿共32页 汇编语言源程序格式(汇编语言源程序格式(2)程序语句程序语句表面上组成:表面上组成:(专业说法专业说法)保留字(保留字(Reserved Words)SEGMENT ENDS OFFSET SIZE DB DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END标识符(标识符(Identifiers字母字母+字母字母/数字数字/_,3
10、2个)个)界符(界符(Delimiters分隔两部分)分隔两部分)空格空格:,:,常数(常数(Const.s)1000H 11101000B 0ABCDH注释(注释(Comments);分号后分号后 大段语句大段语句:.Comment /9第9页,本讲稿共32页 汇编语言源程序格式(汇编语言源程序格式(3)-名字名字(name)标号(标号(Label)xxxx:指令的符号地址(可浮动)指令的符号地址(可浮动)段、偏移量、类型段、偏移量、类型(NEAR)/FAR)变量名变量名/段名段名/过程名过程名-指示性语句(可浮动)指示性语句(可浮动)-无冒号无冒号;-有规定有规定-段、偏移量、类型段、偏移
11、量、类型(操作数操作数)(BYTE/WORD/DWORD/QWORD/TBYTE(10))字节字节 字字 双字双字 四字四字 十字节十字节段段过程过程变量变量标记标记名称名称10第10页,本讲稿共32页 汇编语言源程序格式(汇编语言源程序格式(4)助记符和伪操作助记符和伪操作(Mnemonic&Pseudo Operation)指令助记符指令助记符 MOV,ADD,.指指示示性性操操作作 DB,DW,SEGMENT,ENDS,ASSUME,END 操作数操作数(Operand)单)单/双双/无,逗号隔开无,逗号隔开 -常数常数/寄存器寄存器/标号标号/变量变量/表达式表达式 (1)常数:常数:
12、xxxxD/B/H/O(Q),),ASCII(A01)11第11页,本讲稿共32页 源程序格式源程序格式 操作数(操作数(1)(2)寄存器寄存器 8位位:AL/AH,BH/BL,CH,CL,DH,DL 16位位:AX/BX/CX/DX,SI/DI/BP/SP/D/ES/CS(3)标号标号 (少用绝对地址,多用标号(少用绝对地址,多用标号-维护,移植维护,移植)(4)变量变量 内存数据区名内存数据区名,类型类型 B/W/DW/QW/TB(5)表达式表达式 (预编译(预编译/汇编处理)汇编处理)算术运算符算术运算符 +-*/MOD (变量地址(变量地址+/-)逻辑运算符逻辑运算符 (位)(位)AN
13、D/OR/XOR/NOT AND AL,100001B AND AL,100001B AND 1111101B12第12页,本讲稿共32页 源程序格式源程序格式 操作数(操作数(2)(5)表达式(续)表达式(续)(预编译(预编译/汇编处理)汇编处理)关系运算符关系运算符 关关系系运运算算符符有有:EQ(等等于于),NE(不不等等),LT(小小于于),GT(大于),(大于),LE(小于或等于),(小于或等于),GE(大于或等于)等。(大于或等于)等。参参与与关关系系运运算算的的必必须须是是两两个个数数值值,或或同同一一段段中中的的两两个个存存储储单单元元地地址址,但但运运算算结结果果只只可可能能
14、是是两两个个特特定定的的数数值值之之一一:当当关关系系不不成成立立(假假)时时,结结果果为为0;当当关关系系成成立立(真真)时时,结结果果为为0FFFFH。例例如如,MOV AX,4 EQ 3;关关系系不不成成立立,故故(AX)0 MOV AX,4 NE 3;关关 系系 成成 立立,故故(AX)0FFFFH13第13页,本讲稿共32页 源程序格式源程序格式 操作数(操作数(3)(5)表达式(续)表达式(续)(预编译(预编译/汇编处理)汇编处理)分析运算符和合成运算符分析运算符和合成运算符 分分析析运运算算符符 用用以以分分析析提提取取一一个个存存储储器器操操作作数数的的属属性性,如如段段、偏偏
15、移移量量或或类类型型等等。OFFSET、SEG、TYPE、SIZE、LENGTH;合成运算符合成运算符 可规定存储器操作数的某个属性,例如类型。可规定存储器操作数的某个属性,例如类型。PTR、THIS、SHORT (类似类型强制转换)(类似类型强制转换)INC WORD PTR BX ADD BYTE PTR 1000H,38H14第14页,本讲稿共32页 源程序格式源程序格式 操作数(操作数(4)(5)表达式(续)表达式(续)分析运算符分析运算符OFFSET 可以得到一个标号或变量的偏移地址可以得到一个标号或变量的偏移地址(定位后已知定位后已知)MOV SI,OFFSET DATA1 LEA
16、 SI,DATAl LEA SI,DATA1BX+100 SEG 可以得到一个标号或变量的段值可以得到一个标号或变量的段值 MOV AX,SEG ARRAY MOV DS,AXTYPE 结果结果=类型数值(与存储器操作数类型属性的对应)类型数值(与存储器操作数类型属性的对应)B-1 W-2 DW-4 NEAR-(-1)FAR(-2)15第15页,本讲稿共32页 源程序格式源程序格式 操作数(操作数(5)(5)表达式(续)表达式(续)分析运算符分析运算符 TYPEVAR DW?;?;变量变量VAR的类型为字的类型为字 2ARRAY DD 10 DUP(?);(?);变量变量ARRAY的类型为双字
17、的类型为双字:type ARRAY=4STR DB This is a test;变量变量STR的类型为字节的类型为字节 1 :MOV AX,TYPE VAR;(AX)2MOV BX,TYPE ARRAY;(BX)4MOV CX,TYPE STR;(CX)116第16页,本讲稿共32页 源程序格式源程序格式 操作数(操作数(6)(5)表达式(续)表达式(续)分析运算符分析运算符 LENGTH/SIZELENGTH 一个变量一个变量DUP定义的变量总数定义的变量总数 非非DUP则则=1 (LENGTH ARRAY=10)SIZE 一个变量第一个一个变量第一个DUP定义的字节总数定义的字节总数 (
18、变量(变量TYPE*LENGTH)非非DUP则则=TYPE 例例 V1 DB 20 DUP(?)(?),20,100H DUP(A)V2 DD 4000H SIZE V120 SIZE V2=417第17页,本讲稿共32页 源程序格式源程序格式 操作数(操作数(7)合成运算符号合成运算符号 PTR/THIS/HIGH/LOW/$PTR (强制)指定(强制)指定MEM操作数类型,不明或强制操作数类型,不明或强制 MOV AX,BX-INC BYTE/WORD PTR BXTHIS(同(同C中中UNION联合体)联合体)同一变量区同一变量区,可按不同类型访问(,可按不同类型访问(BYTE/WORD
19、/DWORD)V1W EQUTHIS WORDV1BDB 10 DUP(?)(?)MOV AX,(WORD PTR)V1B ;强强制制转转换换(否否则则Warning或或Error)SHORT 127/+128 短标号短标号 JMP SHORT SLABLE18第18页,本讲稿共32页 源程序格式源程序格式 操作数(操作数(8)(5)表达式(续)表达式(续)特殊运算特殊运算/运算顺序运算顺序段超越段超越 CS:/ES/SS:/DS:HIGH xxxx ;high mydataLOW xxxx$(当前指令地址当前指令地址)运算关系顺序运算关系顺序 P144 表表3.2 先合成先合成-分析运算分析
20、运算优优先先 (1)LENGTH,SIZE,WIDTH,MASK,(),(2)(结结构构成成员员)(3)(段段超超越越)(4)PTR,OFFSET,SEG,TYPE,THIS(5)HIGH,LOW-(6)+,-(7)*/MOD,(8)SHL,SHR (9)EQ,NE,LT,LE,GT,GE(10)NOT(11)AND(12)OR,XOR(13)SHORT(最低最低)(不用硬记,多用括号)不用硬记,多用括号)19第19页,本讲稿共32页 3.3源程序格式源程序格式 伪操作命令伪操作命令 汇编程序的命令(定义、分配汇编程序的命令(定义、分配管理)管理)(-=CPU指令指令一种操作一种操作)处理器方
21、式处理器方式/数据数据/符号符号/段段/过程过程/模块与链接定义模块与链接定义 宏处理宏处理/条件条件/列表列表/其他微操作其他微操作 处理器方式定义处理器方式定义 (.8086).286(C,P).586 .MMX .386(C,P).686(P).K3D .8087 .80287,.80387配对配对 20第20页,本讲稿共32页 源程序格式源程序格式 伪操作命令伪操作命令 数数据据定定义义(分分配配)DB(字字节节)DW(字字)DD(双双字字)DQ(4字字/8字节)字节)DT(十字节(十字节HEX)DB 30,20H,111110B,3 DUP(xx/?);DB?,?DW?,?,?,LA
22、BEL(偏移量偏移量)DD LABEL ;四字节;四字节 段基地址,偏移量段基地址,偏移量CS:IP指针变量指针变量);4字节数(整数变量)(字节数(整数变量)(12345678H)DT 十字节十字节HEX(如(如Compacted-BCD)21第21页,本讲稿共32页 源程序格式源程序格式 数据定义数据定义 STRUC 自定义多字段组成的数据类型。自定义多字段组成的数据类型。(同同C中中struct)-定义结构类型定义结构类型 变量名变量名 结构名结构名 定义结构变量定义结构变量 VS1 S1;VS2 S1 20 DUP();VS3 S1 30 dup)结构变量名结构变量名.字段名(成员名)
23、字段名(成员名)-引用引用|BX.字段名,字段名,VS1.字段名字段名(SIZE 等仍可用等仍可用)VS1.V1,BX.V2,BX.V1+100结构名结构名 STRUC:结构名结构名 ENDS例例 S1 STRUC V1 DB?V2 DW?S1 ENDS22第22页,本讲稿共32页 源程序格式源程序格式 符号定义符号定义名字名字 EQU 表达式表达式(全局,唯一,不可换,汇编替换)(全局,唯一,不可换,汇编替换)COUNT EQU 2000名字名字=表达式表达式 COUNT=2000 (可换改)可换改)名字名字 LABEL 类型类型(Byte,Word,Double Word,STRUC,RE
24、CORD,NEAR,FAR)THIS 与与C中中UNION相相近近-定定义义标标号号或或变变量量类类型型(下下一一CPU指令或指令或DB伪指令伪指令)例:例:V1W EQU THIS WORD;同;同V1W LABLE WORD V1B DB 10,23,7AH,41H,ABCD$MOV AX,V1W;MOV DL,V1B23第23页,本讲稿共32页 源程序格式源程序格式 段定义(段定义(1)SEGMENT/ENDS 逻辑段存储定位关系逻辑段存储定位关系段段名名 SEGMENT 定定位位类类型型,组组合合类类型型,类类别别.PARA (节ParagraphXXXX0H)BYTE (任意)WOR
25、D (偶数地址)PAGE (页256XXX00)四四种种定定位位类类型型:确确定定段段的的边边界界定定位位(浮浮动动预预设设为为常常量量,相对关系相对关系LINK)段名段名 ENDS段1段2段324第24页,本讲稿共32页 源程序格式源程序格式 段定义(段定义(2)SEGMENT/ENDS SNAME SEGMENT 定位类型定位类型,组合类型组合类型,类别类别.NONE 不组合不组合 PUBLIC 多个模块相同段名装配合一多个模块相同段名装配合一 STACK 堆栈,堆栈,同同Public(相同段名装配合一相同段名装配合一)EXE文件装入时文件装入时SP初值初值=末指针末指针+1(栈底)(栈底
26、)COMMON 公公用用 不不同同程程序序遇遇到到同同名名时时同同一一地地址址装装入入,覆覆盖盖重叠临时变量,以最长为界重叠临时变量,以最长为界 MEMORY 置置于于地地址址最最高高处处,多多个个时时取取第第一一个个,其其余余作作为为COMMON25第25页,本讲稿共32页SEGMENT/ENDS SEGMENT 定位类型定位类型,组合类型组合类型,类别类别.AT 表达式表达式 定位在指定段基位置定位在指定段基位置 AT 2000H 起始物理地址起始物理地址20000H;类类别别(名名称称)决决定定装装入入顺顺序序,顺顺序序装装入入,相相同同类类别别连连续续装入成一块装入成一块(段段)END
27、S -段结束段结束 源程序格式源程序格式 段定义段定义(3)X简化段定义简化段定义 (P162)MASM5.0.CODE .DATA .STACK.MODLE 模式模式,高级语言高级语言)26第26页,本讲稿共32页 源程序格式源程序格式 ASSUME 说明说明ASSUME SR:段名:段名,SR:段名:段名,-逻辑段与物理段之间的关系逻辑段与物理段之间的关系(SR=CS/DS/ES/SS)直直接接MEM访访问问时时,汇汇编编时时确确定定变变量量属属于于哪哪一一个个段段范范围围计计算算偏偏移移量量,必必要要时时自自动动加加段段超超越越前前缀缀。不不改改变变段段寄寄存存器器内内容容!MOV AX
28、,WORDMEM 汇编汇编 CS/ES/SS:MOV AX,3002 未注明未注明error A2068:Cannot address with segement register.人工说明人工说明(强制指定强制指定SEG REG,易错不可取,易错不可取)结果结果=计算相对于指定段偏移量(定位类型)计算相对于指定段偏移量(定位类型)27第27页,本讲稿共32页 源程序格式源程序格式 过程定义过程定义过程名过程名 PROC (NEAR)/FAR:RET;(自动(自动RETF/RET)过程名过程名ENDP 结构化结构化 子程序(子程序(SUBROUTINE)引用:引用:CALL 过程名过程名,(堆
29、栈使用)堆栈使用)MYPROC PROC :RETMYPROC ENDPCALL MYPROC;28第28页,本讲稿共32页 源程序格式源程序格式 模块与链接定义模块与链接定义CALL BPROCBPROCMOV AX,SEG ASppedASpeedDW 200B_START PROCNAMENAME 模块名模块名 ENDEND 起始入口标号起始入口标号 PUBLICPUBLIC 符号符号,。,。EXTRNEXTRN 名字:类型名字:类型,。,。多模块链接多模块链接 (加(加STACKSTACK)PUBLIC Speed,BPROC PUBLIC Speed,BPROC EXTRN BPRO
30、C:FAR EXTRN ASpeed:WORD EXTRN BPROC:FAR EXTRN ASpeed:WORD END B_STARTEND B_START A模块+B模块+库模块程序29第29页,本讲稿共32页 源程序格式源程序格式 模块与链接定义模块与链接定义(2)CALL BPROCBPROCMOV AX,SEG ASppedASpeedDW 200B_START PROCPUBLIC Speed,BPROCEXTRN BPROC:FARCALL BPROCEND B_STARTEND B_STARTEXTRN ASpeed:WORD MOV AX,SEG Aspeed MOV DS
31、,AX MOV AX,AspeedCMP A模块模块B模块模块30第30页,本讲稿共32页MACRO/ENDM-宏定义宏定义 程序简洁程序简洁 宏指令名宏指令名 MACRO 参数参数,。,。;形参(哑元);形参(哑元):;(宏定义体);(宏定义体)ENDM宏调用宏调用=汇编时宏扩展(代换)汇编时宏扩展(代换)宏调用宏调用=宏指令名宏指令名 实参实参 宏定义宏定义INCLUDE xxxx.h 源程序格式源程序格式 宏处理宏处理 MACRO(概念概念)MYMACRO_OP1 1MYMACRO_OP1 23MYMACRO_OP1 MACRO P1MOV AL,P1;形式参数形式参数MOV DX,278HOUT DX,ALENDM宏调用宏调用31第31页,本讲稿共32页 源程序格式源程序格式 条件汇编条件汇编(概念概念)同同IFDEF /ENDIFIF condition指令组指令组(ELSE)指令组指令组ENDF 汇编程序汇编程序(二二)32第32页,本讲稿共32页