微机原理04汇编语言程序设计-1_第1页
微机原理04汇编语言程序设计-1_第2页
微机原理04汇编语言程序设计-1_第3页
微机原理04汇编语言程序设计-1_第4页
微机原理04汇编语言程序设计-1_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章 汇编语言程序设计汇编语言程序设计-2F寻址方式寻址方式(实模式实模式):1. 立即数寻址立即数寻址MOV AX, 1234H2. 寄存器寻址寄存器寻址MOV AX, BX3. 直接寻址直接寻址MOV AX, 1234H4. 寄存器间接寻址寄存器间接寻址MOV AX, BX 5. 基址寻址基址寻址MOV AX, BX+100H6. 变址寻址变址寻址MOV AX, SI+100H7. 基址加变址寻址基址加变址寻址MOV AX, BX+SI8. 带位移的基址加变址寻址带位移的基址加变址寻址MOV AX, BX+SI+100H数据结构的基址寻址方式数据结构的基址寻址方式字段字段0字段字段n字段

2、字段n-1字段字段2字段字段1基址寄存器基址寄存器+(位移量)(位移量)MOV AX, BX+100H(位移量)(位移量)数据阵列的变址寻址方式数据阵列的变址寻址方式单元单元0单元单元n单元单元n-1单元单元2单元单元1变址寄存器变址寄存器+MOV AX, SI+100H单元单元(0,0)单元单元(0,1)单元单元(0,n)(位移量)(位移量)二维数据阵列的基址加变址寻址方式二维数据阵列的基址加变址寻址方式基址寄存器基址寄存器+MOV AX, BX+SI+100H单元单元(1,0)单元单元(1,n)单元单元(1,1)单元单元(m,n)变址寄存器变址寄存器+调试程序调试程序DEBUGR寄存器命令

3、寄存器命令标志标志置位置位复位复位OFOVNVDFDNUPIFEIDISFNGPLZFZRNZAFACNAPFPEPOCFCYNCAFPFcfPF功能:检查或修改功能:检查或修改寄存器的值寄存器的值R 寄存器名寄存器名调试程序调试程序DEBUGD转储命令转储命令功能:检查存储器功能:检查存储器的内容的内容D 内存地址内存地址调试程序调试程序DEBUGE输入输入命令命令功能:检查或修改功能:检查或修改存储器的内容存储器的内容E 内存地址内存地址回车:结束输入命令回车:结束输入命令空格:不修改存储器内空格:不修改存储器内 容,显示下一个容,显示下一个 存储单元的内容存储单元的内容输入新值,后回车或

4、空格输入新值,后回车或空格调试程序调试程序DEBUGA汇编命令汇编命令功能:汇编程序指令功能:汇编程序指令A 起始地址起始地址U汇编命令汇编命令功能:反汇编程序指令功能:反汇编程序指令U 起始地址起始地址调试程序调试程序DEBUGT跟踪跟踪命令命令功能:跟踪程序执行功能:跟踪程序执行T=起始地址起始地址指令条数指令条数调试程序调试程序DEBUGR运行运行命令命令功能:运行程序功能:运行程序G=起始地址起始地址F算术运算指令的例子算术运算指令的例子1. 设两个十进制数设两个十进制数1234和和5678分别存放在数据分别存放在数据段中从段中从1000H和和2000H开始的单元中,计算这两开始的单元

5、中,计算这两个数的和,结果存放在个数的和,结果存放在3000H开始的单元中开始的单元中MOV AL, 1000ADD AL, 2000;低字节相加;低字节相加DAA;十进制调整;十进制调整MOV 3000, AL;存低字节和;存低字节和MOV AL, 1001ADC AL, 2001 ;高字节带进位相加;高字节带进位相加DAA;十进制调整;十进制调整MOV 3001, AL;存高字节和;存高字节和F算术运算指令的例子算术运算指令的例子2. 实现非压缩实现非压缩BCD数数6 8=48的程序的程序MOV AL, 06MOV BL, 08MUL BL;AAM;AX(AL) (BL)十进制调整,使十进

6、制调整,使(AX)=0408F算术运算指令的例子算术运算指令的例子3. 实现非压缩实现非压缩BCD数数17 5=3余余2的程序的程序MOV AX, 0107MOV BL, 05AAD;DIV BL;除法,得商除法,得商(AL)=03,余数余数(AH)=02十进制调整,使十进制调整,使(AX)=00113.1 概述概述3.2 Pentium微处理器的寻址方式微处理器的寻址方式3.3 数据传送指令数据传送指令3.4 算术运算指令算术运算指令3.5 逻辑运算指令逻辑运算指令3.6 串操作指令串操作指令3.7 程序控制指令程序控制指令3.8 保护模式的系统控制指令保护模式的系统控制指令3.9 浮点运算

7、指令浮点运算指令3.10 MMX指令简介指令简介3.5 逻辑运算指令逻辑运算指令F位操作位操作AND 目标操作数,源操作数目标操作数,源操作数OR目标操作数,源操作数目标操作数,源操作数XOR 目标操作数,源操作数目标操作数,源操作数NOT 目标操作数目标操作数F位操作位操作AND 主要用于将二进制数的某些位清主要用于将二进制数的某些位清0AND BL, 0FHxxxxxxxx (BL)00001111 0F0000 xxxx 结果结果ANDF位操作位操作OR主要用于将二进制数的某些位置主要用于将二进制数的某些位置1OR BL, 0FHxxxxxxxx (BL)00001111 0Fxxxx1

8、111 结果结果ORF位操作位操作XOR 主要用于将二进制数的某些位求反主要用于将二进制数的某些位求反XOR BL, 0FHxxxxxxxx (BL)00001111 0Fxxxxxxxx 结果结果XORF移位操作移位操作指令格式:指令格式:SHL 目标操作数,计数目标操作数,计数移移1位时,计数值可以为立即数位时,计数值可以为立即数1移多位时,计数值必须先存入移多位时,计数值必须先存入CL寄存器寄存器MOV CL, 3SHL AX, CLP.93F位测试位测试TEST 用于测试二进制数的某些位用于测试二进制数的某些位(一般为一般为1位位)TEST AL, 1JNZ RIGHTTEST AL,

9、 128JNZ LEFT当被测试为为当被测试为为0时,时,ZF置位(置位(ZF=1);当被测试为为当被测试为为1时,时,ZF复位(复位(ZF=0)F位测试位测试位测试位测试:BT 目标操作数,源操作数目标操作数,源操作数位测试置位测试置0:BTR 目标操作数,源操作数目标操作数,源操作数位测试置位测试置1:BTS 目标操作数,源操作数目标操作数,源操作数位测试取反位测试取反:BTC 目标操作数,源操作数目标操作数,源操作数测试目标操作数中由源操作数指定的位,将测试目标操作数中由源操作数指定的位,将其值送其值送CF标志标志源操作数以目标操作数的长度为模源操作数以目标操作数的长度为模MOV AX,

10、 1FF0H BTS AX, 24F位扫描位扫描向前位扫描向前位扫描:BSF 目标操作数,源操作数目标操作数,源操作数向后位扫描向后位扫描:BSR 目标操作数,源操作数目标操作数,源操作数对源操作数进行扫描,将遇到的第一个对源操作数进行扫描,将遇到的第一个1所所在的位置送目标操作数,并将在的位置送目标操作数,并将ZF清清0。如果源操作数为如果源操作数为0,则目标操作数不变,且,则目标操作数不变,且ZF置置1MOV EAX, 60000000H BSF EBX,EAX3.6 串操作指令串操作指令F串传送串传送MOVSBMOVSWMOVSD将一个字节将一个字节/字字/双字从双字从DS:SI ES:

11、DI指令前要先将源串首地址指令前要先将源串首地址 DS:SI 目标串首地址目标串首地址 ES:DI完成操作后自动修改完成操作后自动修改SI、DI,使其指向串,使其指向串的下一个元素的下一个元素F串传送串传送完成操作后自动修改完成操作后自动修改SI、DI,使其指向串,使其指向串的下一个元素的下一个元素串操作方向由串操作方向由CLD和和STD指令设置指令设置CLD 地址递增方向(地址递增方向(DF=0)STD 地址递减方向(地址递减方向(DF=1)F串传送串传送 重复前缀重复前缀需要先将串的长度存入需要先将串的长度存入CX寄存器寄存器每处理完一个元素自动使每处理完一个元素自动使CX-1,直到直到C

12、X=0才结束串传送才结束串传送完成整个串的传送完成整个串的传送REP MOVSBREP MOVSWREP MOVSD例:例: P.96例:例:F串传送串传送MOV SI, OFFSET S1MOV DI, OFFSET S2MOV CX, 18REP MOVSB.S1 DB “This is a string!$”S2 DB 18 DUP(0)F串比较串比较CMPSBCMPSWCMPSD比较地址为比较地址为DS:SI、ES:DI的两的两个字节个字节/字字/双字双字指令前通常加重复前缀指令前通常加重复前缀REPZ/REPE,从而,从而当发现两个串不同时结束比较。当发现两个串不同时结束比较。例:例

13、:F串比较串比较MOV SI, OFFSET S1MOV DI, OFFSET S2MOV CX, xxREPZ CMPSBJNZ Not_EqualEqual: Not_Equal:.F串搜索串搜索SCASBSCASWSCASD在首地址为在首地址为ES:DI的串中搜索的串中搜索某个元素(字节某个元素(字节/字字/双字)双字)事先要将待搜索的元素存入事先要将待搜索的元素存入AL/AX/EAX指令前通常加重复前缀指令前通常加重复前缀REPNZ/REPNE,从而当发现待搜索的元素时结束搜索。从而当发现待搜索的元素时结束搜索。例:例:F串搜索串搜索MOV DI, OFFSET StringMOV C

14、X, xxMOV AL, hREPNZ SCASBJNZ Not_FoundFound: Not_ Found: .F串装入串装入LODSBLODSWLODSD将地址为将地址为DS:SI的一个字节的一个字节/字字/双字装入双字装入AL/AX/EAX串装入指令没有重复前缀串装入指令没有重复前缀例:例:MOV SI, OFFSET StringMOV CX, xxMOV AH, 2LODSBMOV DL, ALINT 21LOOP NextCharNextChar:F串装入串装入F串存储串存储LODSBLODSWLODSD将将AL/AX/EAX的值存入地址的值存入地址为为ES:DI的内存单元的内存

15、单元利用重复前缀利用重复前缀REP,可以建立一个取值相,可以建立一个取值相同的数据串同的数据串3.7 程序控制指令程序控制指令控制程序的流向:控制程序的流向:无条件转移无条件转移条件转移条件转移循环控制循环控制过程调用与返回过程调用与返回中断中断F无条件转移无条件转移JMP Label1.Label1:F条件转移条件转移相当于相当于goto语句语句根据执行上一指令后标志寄存器的状态而根据执行上一指令后标志寄存器的状态而决定是否转移决定是否转移F条件转移条件转移根据执行上一指令后标志寄存器的状态而根据执行上一指令后标志寄存器的状态而决定是否转移决定是否转移JAJAE =JBJBE JGE =JL

16、JLE =JG 标号标号F条件转移条件转移JZJNZJCJNCJOJNOJPJNPJSJNSJCXZF循环控制循环控制LOOPLOOPE/LOOPZLOOPNE/LOOPNZ与与CX配合使用,配合使用,CX存放循环次数存放循环次数4.1 概述概述4.2 汇编语言的基本语法汇编语言的基本语法4.3 汇编语言程序的控制结构汇编语言程序的控制结构4.4 DOS/BIOS中断调用中断调用4.5 保护模式下的汇编语言程序设计保护模式下的汇编语言程序设计4.6 Win32汇编语言程序设计汇编语言程序设计4.7 与高级语言的接口与高级语言的接口4.1 概述概述汇编语言程序的上机处理过程汇编语言程序的上机处理

17、过程主要的汇编程序:主要的汇编程序:MASM、TASM实模式汇编语言源程序的结构实模式汇编语言源程序的结构DATA SEGMENT .DATA ENDSSTACK SEGMENT STACK .STACK ENDSCODE SEGMENT ASSUME DS:DATA, SS:STACK, CS:CODESTART: CODE ENDS END START4.2 汇编语言的基本语法汇编语言的基本语法1. 常量、变量和表达式常量、变量和表达式F常量常量二进制二进制xxxxxxxxB01000101B八进制八进制xxxO 或或xxxQ721O或或721Q十进制十进制xxxx或或xxxxD1991或

18、或1991D十六进制十六进制xxxxH0F1D4H字符串字符串xxx或或“xxx”AB数值常量、符号常量(用数值常量、符号常量(用EQU或或=定义)定义)F变量变量内存单元的名字内存单元的名字,由由DB/DW/DD/DQ/DT定义定义BUF DB ?MOV BUF,AL变量的三种属性:变量的三种属性:段值段值 SEG偏移量偏移量 OFFSET类型类型 BYTE/WORD/.F标号标号指令存放单元的符号地址指令存放单元的符号地址,是转移是转移/调用调用/循环循环指令的操作数指令的操作数标号的三种属性:标号的三种属性:段值段值 SEG偏移量偏移量 OFFSET类型类型 NEAR/FARF表达式表达

19、式由操作数和运算符组成的序列由操作数和运算符组成的序列操作数可以是寄存器、常量(数值常量、符操作数可以是寄存器、常量(数值常量、符号常量)、存储器操作数(标号、变量)号常量)、存储器操作数(标号、变量)运算符包括:算术运算符、逻辑运算符、关运算符包括:算术运算符、逻辑运算符、关系运算符、数值返回运算符和属性运算符系运算符、数值返回运算符和属性运算符数值返回运算符(分析运算符)数值返回运算符(分析运算符)SEG 变量变量/标号标号OFFSET 变量变量/标号标号TYPE 变量变量/标号标号变量返回类型:变量返回类型:1字节、字节、2字、字、4双字双字标号返回类型:标号返回类型:-1NEAR、-2

20、FARLENGTH 变量变量SIZE 变量变量属性运算符(合成运算符)属性运算符(合成运算符)PTR类型类型 PTR 表达式表达式MOV WORD PTR BX, 0THISTHIS 类型类型MY_BYTE EQU THIS BYTEMY_WORD DW 100 DUP(?)2. 指令语句指令语句标号:标号: 指令助记符指令助记符 操作数操作数 ;注释;注释3. 伪指令语句伪指令语句名字名字 伪操作命令伪操作命令 操作数操作数 ;注释;注释F符号定义语句符号定义语句定义符号常量定义符号常量PRICE EQU 281PORT = 6PORT = PORT +1F数据定义语句数据定义语句定义变量、

21、分配存储单元等定义变量、分配存储单元等变量名变量名 DB/DW/DD/DQ/DT 操作数,操作数,操作数,操作数操作数可以是:数值表达式或表、字符串、?、操作数可以是:数值表达式或表、字符串、?、N DUP表达式表达式VAR DW ?ARRAY DB 100 DUP (0)F段定义语句段定义语句P. 131F过程定义语句过程定义语句P. 131F程序结束语句程序结束语句END 表达式表达式表达式为程序的第一条指令的地址表达式为程序的第一条指令的地址4.3 汇编语言程序的控制结构汇编语言程序的控制结构分支结构分支结构程序段程序段1程序段程序段2条件条件JZ L1L1: .L2: .后继程序后继程序L3: .JMP L3TEST AX, 1YN程序段程序段1后继程序后继程序条件条件JZ L1L1: . .TEST AX, 1分支结构分支结构YN循环结构循环结构先执行、后判断先执

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论