nullnull寻址方式(实模式):
1. 立即数寻址 MOV AX, 1234H
2. 寄存器寻址 MOV AX, BX
3. 直接寻址 MOV AX, [1234H]
4. 寄存器间接寻址 MOV AX, [BX]
5. 基址寻址 MOV AX, [BX+100H]
6. 变址寻址 MOV AX, [SI+100H]
7. 基址加变址寻址 MOV AX, [BX+SI]
8. 带位移的基址加变址寻址
MOV AX, [BX+SI+100H]null数据结构的基址寻址方式字段0字段n字段n-1字段2字段1基址寄存器+(位移量)MOV AX, [BX+100H]null(位移量)数据阵列的变址寻址方式单元0单元n单元n-1单元2单元1变址寄存器+MOV AX, [SI+100H]null单元(0,0)单元(0,1)单元(0,n)(位移量)二维数据阵列的基址加变址寻址方式基址寄存器+MOV AX, [BX+SI+100H]单元(m,n)变址寄存器+null调试程序DEBUGR——寄存器命令功能:检查或修改寄存器的值
R [寄存器名]null调试程序DEBUGD——转储命令功能:检查存储器的内容
D [内存地址]null调试程序DEBUGE——输入命令功能:检查或修改存储器的内容
E [内存地址]回车:结束输入命令
空格:不修改存储器内
容,显示下一个
存储单元的内容
输入新值,后回车或空格null调试程序DEBUGA——汇编命令功能:汇编程序指令
A [起始地址]U——汇编命令功能:反汇编程序指令
U [起始地址]null调试程序DEBUGT——跟踪命令功能:跟踪程序执行
T=[起始地址][指令条数]null调试程序DEBUGR——运行命令功能:运行程序
G=[起始地址]null算术运算指令的例子1. 设两个十进制数1234和5678分别存放在数据段中从1000H和2000H开始的单元中,计算这两个数的和,结果存放在3000H开始的单元中MOV AL, [1000]
ADD AL, [2000] ;低字节相加
DAA ;十进制调整
MOV [3000], AL ;存低字节和
MOV AL, [1001]
ADC AL, [2001] ;高字节带进位相加
DAA ;十进制调整
MOV [3001], AL ;存高字节和null算术运算指令的例子2. 实现非压缩BCD数68=48的程序MOV AL, 06
MOV BL, 08
MUL BL ;
AAM ;AX(AL)(BL)十进制调整,使(AX)=0408null算术运算指令的例子3. 实现非压缩BCD数175=3余2的程序MOV AX, 0107
MOV BL, 05
AAD ;
DIV BL ;除法,得商(AL)=03,
余数(AH)=02十进制调整,使(AX)=0011null第三章 Pentium微处理器的指令系统3.1 概述
3.2 Pentium微处理器的寻址方式
3.3 数据传送指令
3.4 算术运算指令
3.5 逻辑运算指令
3.6 串操作指令
3.7 程序控制指令
3.8 保护模式的系统控制指令
3.9 浮点运算指令
3.10 MMX指令简介null3.5 逻辑运算指令位操作AND 目标操作数,源操作数
OR 目标操作数,源操作数
XOR 目标操作数,源操作数
NOT 目标操作数null位操作AND 主要用于将二进制数的某些位清0AND BL, 0FHxxxxxxxx (BL)
00001111 0F
0000xxxx 结果ANDnull位操作OR 主要用于将二进制数的某些位置1OR BL, 0FHxxxxxxxx (BL)
00001111 0F
xxxx1111 结果ORnull位操作XOR 主要用于将二进制数的某些位求反XOR BL, 0FHxxxxxxxx (BL)
00001111 0F
xxxxxxxx 结果XORnull移位操作指令格式:
SHL 目标操作数,计数移1位时,计数值可以为立即数1
移多位时,计数值必须先存入CL寄存器MOV CL, 3
SHL AX, CLP.93null位测试TEST 用于测试二进制数的某些位(一般为1位)TEST AL, 1
JNZ RIGHT
TEST AL, 128
JNZ LEFT当被测试为为0时,ZF置位(ZF=1);
当被测试为为1时,ZF复位(ZF=0)
null位测试位测试: BT 目标操作数,源操作数
位测试置0: BTR 目标操作数,源操作数
位测试置1: BTS 目标操作数,源操作数
位测试取反: BTC 目标操作数,源操作数测试目标操作数中由源操作数指定的位,将其值送CF标志
源操作数以目标操作数的长度为模MOV AX, 1FF0H
BTS AX, 24null位扫描向前位扫描: BSF 目标操作数,源操作数
向后位扫描: BSR 目标操作数,源操作数
对源操作数进行扫描,将遇到的第一个1所在的位置送目标操作数,并将ZF清0。
如果源操作数为0,则目标操作数不变,且ZF置1MOV EAX, 60000000H
BSF EBX,EAXnull3.6 串操作指令串传送MOVSB
MOVSW
MOVSD将一个字节/字/双字从
DS:SI ES:DI指令前要先将源串首地址 DS:SI
目标串首地址 ES:DI
完成操作后自动修改SI、DI,使其指向串的下一个元素null串传送完成操作后自动修改SI、DI,使其指向串的下一个元素
串操作方向由CLD和STD指令设置
CLD 地址递增方向(DF=0)
STD 地址递减方向(DF=1)null串传送
——重复前缀需要先将串的长度存入CX寄存器
每处理完一个元素自动使CX-1,直到CX=0才结束串传送——完成整个串的传送REP MOVSB
REP MOVSW
REP MOVSD例: P.96null例:串传送MOV SI, OFFSET S1
MOV DI, OFFSET S2
MOV CX, 18
REP MOVSB
….
S1 DB “This is a string!$”
S2 DB 18 DUP(0)null串比较CMPSB
CMPSW
CMPSD比较地址为DS:SI、ES:DI的两
个字节/字/双字指令前通常加重复前缀REPZ/REPE,从而当发现两个串不同时结束比较。
null例:串比较MOV SI, OFFSET S1
MOV DI, OFFSET S2
MOV CX, xx
REPZ CMPSB
JNZ Not_Equal
Equal :
……
Not_Equal:
…...null串搜索SCASB
SCASW
SCASD在首地址为ES:DI的串中搜索某个元素(字节/字/双字)
事先要将待搜索的元素存入AL/AX/EAX
指令前通常加重复前缀REPNZ/REPNE,从而当发现待搜索的元素时结束搜索。
null例:串搜索MOV DI, OFFSET String
MOV CX, xx
MOV AL, ‘h’
REPNZ SCASB
JNZ Not_Found
Found:
……
Not_ Found:
…...null串装入LODSB
LODSW
LODSD将地址为DS:SI的一个字节/字/双字装入AL/AX/EAX
串装入指令没有重复前缀null例:MOV SI, OFFSET String
MOV CX, xx
MOV AH, 2
LODSB
MOV DL, AL
INT 21
LOOP NextChar
NextChar:串装入null串存储LODSB
LODSW
LODSD将AL/AX/EAX的值存入地址为ES:DI的内存单元
利用重复前缀REP,可以建立一个取值相同的数据串null3.7 程序控制指令控制程序的流向:
无条件转移
条件转移
循环控制
过程调用与返回
中断null无条件转移JMP Label1
.…..
Label1:条件转移相当于goto语句根据执行上一指令后标志寄存器的状态而决定是否转移null条件转移根据执行上一指令后标志寄存器的状态而决定是否转移JA >
JAE >=
JB <
JBE <=JG >
JGE >=
JL <
JLE <=JG 标号null条件转移JZ
JNZ
JC
JNC
JO
JNOJP
JNP
JS
JNSJCXZnull循环控制LOOP
LOOPE/LOOPZ
LOOPNE/LOOPNZ与CX配合使用,CX存放循环次数null第四章 汇编语言程序设计4.1 概述
4.2 汇编语言的基本语法
4.3 汇编语言程序的控制结构
4.4 DOS/BIOS中断调用
4.5 保护模式下的汇编语言程序设计
4.6 Win32汇编语言程序设计
4.7 与高级语言的接口null4.1 概述汇编语言程序的上机处理过程主要的汇编程序:MASM、TASMnull实模式汇编语言源程序的结构DATA SEGMENT
…...
DATA ENDS
STACK SEGMENT STACK
…...
STACK ENDS
CODE SEGMENT
ASSUME DS:DATA, SS:STACK, CS:CODE
START: ……
CODE ENDS
END START
null4.2 汇编语言的基本语法1. 常量、变量和表达式常量
二进制 xxxxxxxxB 01000101B
八进制 xxxO 或xxxQ 721O或721Q
十进制 xxxx或xxxxD 1991或1991D
十六进制 xxxxH 0F1D4H
字符串 ‘xxx’或“xxx” ‘AB’
数值常量、符号常量(用EQU或=定义)null变量
内存单元的名字,由DB/DW/DD/DQ/DT定义
BUF DB ?
MOV BUF,AL
变量的三种属性:
段值 SEG
偏移量 OFFSET
类型 BYTE/WORD/...null标号
指令存放单元的符号地址,是转移/调用/循环指令的操作数
标号的三种属性:
段值 SEG
偏移量 OFFSET
类型 NEAR/FARnull表达式
由操作数和运算符组成的序列
操作数可以是寄存器、常量(数值常量、符号常量)、存储器操作数(标号、变量)
运算符包括:算术运算符、逻辑运算符、关系运算符、数值返回运算符和属性运算符null数值返回运算符(分析运算符)SEG 变量/标号
OFFSET 变量/标号
TYPE 变量/标号
变量返回类型:1字节、2字、4双字
标号返回类型:-1NEAR、-2FAR
LENGTH 变量
SIZE 变量
null属性运算符(合成运算符)PTR
类型 PTR 表达式
MOV WORD PTR [BX], 0
THIS
THIS 类型
MY_BYTE EQU THIS BYTE
MY_WORD DW 100 DUP(?)
null2. 指令语句标号: 指令助记符 操作数 ;注释null3. 伪指令语句名字 伪操作命令 操作数 ;注释符号定义语句
定义符号常量
PRICE EQU 281
PORT = 6
PORT = PORT +1null数据定义语句
定义变量、分配存储单元等
变量名 DB/DW/DD/DQ/DT 操作数,…,操作数操作数可以是:数值表达式或表、字符串、?、N DUP表达式VAR DW ?
ARRAY DB 100 DUP (0)null段定义语句
P. 131过程定义语句
P. 131程序结束语句
END 表达式表达式为程序的第一条指令的地址null4.3 汇编语言程序的控制结构分支结构程序段1程序段2条件JZ L1L1: ……
…...L2: …...后继程序L3: …...JMP L3TEST AX, 1YNnull程序段1后继程序条件JZ L1L1: ……
…... …...TEST AX, 1分支结构YNnull循环结构先执行、后判断初始化部分循环体修改部分null先判断、后执行初始化部分循环体修改部分后继程序循环结构null循环结构循环控制:计数控制 LOOP
条件控制 JZ/...null4.4 DOS/BIOS中断调用nullnullnullnull习题1. 已知(CS)=0A00H,(DS)=0B00H,(SI)=0100H,(DI)=0200H,(BX)=0300H。指出下列指令中源操作数的寻址方式,并计算③-⑦小题操作数的物理地址。
①MOV AX, 1234H
②MOV AX, BX
③MOV AX, [SI]
④MOV AX, [1234H]
⑤MOV AX, [BX+400H]
⑥MOV AX, [BX+SI]
⑦MOV AX, [BX+DI+0400H]null2. 已知(AX)=701FH,(BX)=13F1H。指出执行下列指令后目标操作数的内容和状态标志位的状态。
SF ZF AF PF CF OF
①ADD AX, BX (AX)= H ;
②SUB AX, BX (AX)= H ;
③AND AX, BX (AX)= H ;
④OR AX, BX (AX)= H ;
⑤XOR AX, BX (AX)= H ;
⑥IMUL BL (AX)= H ;
⑦MUL BH (AX)= H ;
⑧SHR AX, 2 (AX)= H ;
⑨SAR AX, 2 (AX)= H ;
⑩SHL AX, 2 (AX)= H .
3.已知(CS)=1075FH,(IP)=0300H,(SI)=0100H,(DS:100H)=00H,(DS:101H)=10H。指出执行下列指令后程序控制转到何处。
①JMP 10H
②JMP 1000H
③JMP WORD PTR [SI]
本文档为【微机原理04】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。