4CPU汇编指令集与汇编语言编程_图文.
合集下载
汇编语言1-4
使用BP访问主存,则在SS段 默认的情况允许改变,需要使用段超 越前缀指令;8086指令系统中有4个:
CS: SS: DS: ES:
;代码段超越,使用代码段的数据 ;堆栈段超越,使用堆栈段的数据 ;数据段超越,使用数据段的数据 ;附加段超越,使用附加段的数据
第1章
段超越的示例
总结
没有段超越的指令实例: MOV AX,[2000H] ;AX←DS:[2000H] ;从默认的DS数据段取出数据 采用段超越前缀的指令实例: MOV AX,ES:[2000H] ;AX←ES:[2000H] ;从指定的ES附加段取出数据
起始地址,每种逻辑段均有各自的用 途
第1章
段值的确定
一个执行文件.exe在电击执行时,首先由操
作系统分析本程序的段占用情况:包括多少 段、各段长度、代码段第一条指令的偏移 然后在当前内存中寻找合适区域,并分配 CS、DS、SS、ES等各段 把.exe执行文件中的数据调入内存DS段, 代码调入内存CS段…….. 然后把CPU的CS变为当前分配的代码段值, IP为第一条指令的偏移,从而开始程序的执 行 在汇编程序时,通过交叉文件可以看出各段 大小。
第1章
存储器的分段
各段独立
各段重叠
8086对逻辑段要求: 段地址低4位均为0 每段最大不超过64KB
提供地址
SI是源变址寄存器
DI是目的变址寄存器
串操作类指令中,SI和DI具有特别
的功能
第1章
指针寄存器
指针寄存器用于寻址内存堆栈内的数据
SP为堆栈指针寄存器,指示栈顶的偏移地址
SP不能再用于其他目的,具有专用目的 BP为基址指针寄存器,表示数据在堆栈段中
汇编语言指令PPT
分为机器语言、汇编语言和高级语言。
机器语言:用二进制编码表示每条指令,是计算机
能直接识别和执行的语言。
汇编语言:是用助记符、符号和数字等来表示指令
的程序设计语言。它与机器语言指令是一一对应的。
BACK
3
用机器语言编写的程序称为机器语言程序或者指令程 序(机器码程序),因为机器只能直接识别和执行这 种机器码程序,所以又称他为目标程序。 51单片机是8位机,其机器语言以8位二进制码为单位, 称为1字节。 eg:要做10+20的加法,在51单片机中可用机器码指令 编程:
例如:MOV A,3AH;(3A) →A
MOV A,P1;(P1口) →A 或: MOV A,90H; 90H是P1口的地址
BACK
13
;把片内RAM字节地址52H单元的 内容送累加器A中。 MOV 52H,A ;把A的内容传送给片内RAM的52H 单元中。 MOV 50H,60H ;把片内RAM字节地址60H单元的内 容送到50H单元中。 MOV IE,#40H ;把立即数40H送到中断允许寄存器 IE。IE为专用功能寄存器,其字节 地址为0A8H。该指令等价于MOV 0A8H,#40H。 INC 60H ;将地址60H单元中的内容自加1。
三、寻址空间及符号注释
1、寻址空间:见表3-1。 2、符号注释:
BACK
26
表3-1 操作数寻址方式和有关空间
寻址方式 立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址 程序存储器 ROM 片内 RAM 低 128B、特殊功能寄存器 工作寄存器 R0-R7、A、B、C、DPTR 片内 RAM 低 128B、片外 RAM
BACK
MCS-51指令系统可分为五大类
机器语言:用二进制编码表示每条指令,是计算机
能直接识别和执行的语言。
汇编语言:是用助记符、符号和数字等来表示指令
的程序设计语言。它与机器语言指令是一一对应的。
BACK
3
用机器语言编写的程序称为机器语言程序或者指令程 序(机器码程序),因为机器只能直接识别和执行这 种机器码程序,所以又称他为目标程序。 51单片机是8位机,其机器语言以8位二进制码为单位, 称为1字节。 eg:要做10+20的加法,在51单片机中可用机器码指令 编程:
例如:MOV A,3AH;(3A) →A
MOV A,P1;(P1口) →A 或: MOV A,90H; 90H是P1口的地址
BACK
13
;把片内RAM字节地址52H单元的 内容送累加器A中。 MOV 52H,A ;把A的内容传送给片内RAM的52H 单元中。 MOV 50H,60H ;把片内RAM字节地址60H单元的内 容送到50H单元中。 MOV IE,#40H ;把立即数40H送到中断允许寄存器 IE。IE为专用功能寄存器,其字节 地址为0A8H。该指令等价于MOV 0A8H,#40H。 INC 60H ;将地址60H单元中的内容自加1。
三、寻址空间及符号注释
1、寻址空间:见表3-1。 2、符号注释:
BACK
26
表3-1 操作数寻址方式和有关空间
寻址方式 立即数寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址 程序存储器 ROM 片内 RAM 低 128B、特殊功能寄存器 工作寄存器 R0-R7、A、B、C、DPTR 片内 RAM 低 128B、片外 RAM
BACK
MCS-51指令系统可分为五大类
4 CPU汇编指令集与汇编语言编程
Indexed 5-Bit Signed Offset
X
1000
+5 BIT OFFSET 6 $1006
+
12
A
12
LDAA $6,X STAA -$8,Y
STAA -$8,Y
$;
5-BIT OFFSET
Y
2000
5 Bit offset is signed included in instruction post byte. X, Y, SP or PC register can be used for indexing. Offset range from -16 to +15 from base register.
Relative Addressing
Only
for Branch Instructions.
LOOP
Bcc OP CODE OFFSET
(L)BEQ LOOP
OCL PC
OFFSET
OFFSET + OCL LOOP PC
+
Bcc OP CODE OFFSET
Branch Instructions are 2 or 4 bytes in length. All Branches are taken from the next instruction address (Destination of branch is calculated by adding signed offset to OCL +2 OR +4
SP SP SP
$3FFE $3FFF $4000
XH XL TOP OF STACK
DATA HANDLING INSTRUCTIONS
CPU汇编指令集与汇编语言编程
这些指令允许程序员在寄存器和内存之间快 速移动数据,进行基本的算术和逻辑运算。
数据传输指令对于执行程序中的基 本操作至关重要,它们是汇编语言 编程的基础。
算术运算类指令
01
算术运算指令用于执行各种算术运算,如加法、减 法、乘法和除法。
02
这些指令通常用于处理数值数据,并在程序中进行 数学计算。
03
CPU指令集对汇编语言编程的影响
指令集决定了汇编语言的语法和语义
01
不同的CPU架构有不同的指令集,因此汇编语言的语
法和语义也会有所不同。
指令集决定了汇编语言的性能
02 指令集的特性决定了汇编语言的执行效率,了解指令
集的特性有助于编写高效的汇编代码。
指令集决定了汇编语言的可移植性
03
不同的指令集可能导致汇编代码在不同的CPU架构上
算术运算指令包括ADD、SUB、MUL、DIV等,它 们提供了对数值数据进行操作的能力。
逻辑运算类指令
逻辑运算指令用于执行逻辑运 算,如与、或、非等。
这些指令用于处理布尔值和位 操作,常用于控制流和数据操 作。
逻辑运算指令包括AND、OR、 XOR、NOT等,它们在程序中 实现逻辑控制和数据处理。
3
串处理指令包括MOVSB、MOVSW、CMP等, 它们在程序中实现字符串操作和文本处理。
03
汇编语言基础
汇编语言的语法规则
指令格式
每条汇编指令都有固定格式,包 括操作码和操作数,操作码指明 指令类型,操作数指明操作对象。
寻址方式
指令中的操作数如何取得,称为 寻址方式,包括直接寻址、间接 寻址、寄存器寻址等。
系统级编程
汇编语言适用于系统级编 程,如操作系统内核、嵌 入式系统等,能够直接控 制硬件资源。
41_汇编语言与汇编程序课件
END [表达式] 其中表达式表示该汇编程序的启动地址。例如:
┇ END START 则表明该程序的启动地址为START。
22
§5.4汇编语言程序上机操作过程
1. 汇编语言程序上机调试步骤 1. 编写源程序 在弄清问题的要求,确定方案后,汇编语言程序设计
者便可依据前面的指令系统和汇 编语言的规定,逐个模块地编写汇编语言源程序。
3
§5.2 汇编语言中的常数与表达式
5.2.1常数 常数可以分数值常数和字符串常数两类。数值常数按其基数 的不同,可有二进制数、八进制数、十进制数、十六进制数 等几种不同的表示形式,汇编语言中采用不同的后缀加以区 分。 B:表示二进制数。例如,10100101B。 D :表示十进制数。例如,278D或278。 Q: 表示八进制数。例如,567Q,263Q。 H: 表示十六进制数。例如,9AH,5678H。
;定义数据段 ;定义字节数据 ;定义字数据 :定义双字数据 ;数据段结束
7
MOV BX,SEG VARl 汇编成: MOV BX,0300H MOV CX,SEG VAR2 汇编成: MOV CX,0300H MOV DX,SEG VAR3 汇编成; MOV DX,0300H
2)OFFSET运算符:利用运算符OFFSET可以得到一 个标号或变量的偏移量。 使用格式:OFFSET 变量名或标号名
DELAY DELY: WAIT:
DELAY
PROC MOV BL,10 MOV CX,2801 LOOP WAIT DEC BL JNZ DELY RET ENDP
21
5.3.5汇编结束伪指令END 该伪指令表示源程序的结束,将汇编程序停止汇
编。因此,任何一个完整的源程序均应有END指令, 其一般格式为
┇ END START 则表明该程序的启动地址为START。
22
§5.4汇编语言程序上机操作过程
1. 汇编语言程序上机调试步骤 1. 编写源程序 在弄清问题的要求,确定方案后,汇编语言程序设计
者便可依据前面的指令系统和汇 编语言的规定,逐个模块地编写汇编语言源程序。
3
§5.2 汇编语言中的常数与表达式
5.2.1常数 常数可以分数值常数和字符串常数两类。数值常数按其基数 的不同,可有二进制数、八进制数、十进制数、十六进制数 等几种不同的表示形式,汇编语言中采用不同的后缀加以区 分。 B:表示二进制数。例如,10100101B。 D :表示十进制数。例如,278D或278。 Q: 表示八进制数。例如,567Q,263Q。 H: 表示十六进制数。例如,9AH,5678H。
;定义数据段 ;定义字节数据 ;定义字数据 :定义双字数据 ;数据段结束
7
MOV BX,SEG VARl 汇编成: MOV BX,0300H MOV CX,SEG VAR2 汇编成: MOV CX,0300H MOV DX,SEG VAR3 汇编成; MOV DX,0300H
2)OFFSET运算符:利用运算符OFFSET可以得到一 个标号或变量的偏移量。 使用格式:OFFSET 变量名或标号名
DELAY DELY: WAIT:
DELAY
PROC MOV BL,10 MOV CX,2801 LOOP WAIT DEC BL JNZ DELY RET ENDP
21
5.3.5汇编结束伪指令END 该伪指令表示源程序的结束,将汇编程序停止汇
编。因此,任何一个完整的源程序均应有END指令, 其一般格式为