汇编语言程序结构PPT课件

合集下载

课件-汇编语言子程序结构.ppt

课件-汇编语言子程序结构.ppt
Exit : ret Decibin endp
;每次乘的
;结果在BX中
8
Binihex proc near mov ch, 4
Rotate: mov cl, 4 rol bx, cl mov dl, bl and dl, 0fh add dl, 30h cmp dl, 3ah jl print add dl, 7h
┆ 过程名 ENDP
其中PROC表示过程定义开始,ENDP表示过程定 义结束。过程名是过程入口地址的符号表示。
一般过程名同标号一样,具有三种属性,即段 属性、偏移地址属性以及类型属性〔NEAR 和 FAR)。
2024/10/8
2
1.如果调用程序和过程在同一代码段中,那么使用NEAR属 性;

MAIN PROC FAR … CALL SUBR1 RET
sp
di
si
cx
ax
(Sp→)bp
bp
IP CS
[bp+06h] Sum地址
[bp+08h] Count地址 [bp+0ah] Ary地址
Sp
Sp Sp Sp
Sp
14
5 多个模块之间的参数传送问题
(1) PUBLIC伪指令 格式:PUBLIC 符号 [,符号] 功能:说明其后的符号是全局符号。全局符号能被其他模
Print: mov ah, 2 int 21h dec ch jnz rotate
2024/10/8 ret Binihex endp
Crlf proc near mov ah, 2 mov dl, odh int 21h mov dl, oah int 21h ret
Crlf endp
Decihex ends

汇编语言程序设计经典课件模版(PPT65张)

汇编语言程序设计经典课件模版(PPT65张)

DA4 DB 5 DUP(0) ; 重复5个0存入DA4开始的存储单元中
2 表达式赋值语句
1)赋值语句 EQU
格式: 符号名 EQU 表达式 ;一个符号名只能定义一次
例:
COUNT EQU 100
; 常数赋给符号名COUNT
DATA EQU COUNT+2
; 表达式赋给符号名DATA
A1
运算结果 改变运算符优先级 下表或间接地址 连接结构与变量 修改变量 位图形 记录/字段位数
运算符优先级
优先级 1 2 3 4 5 6 7 8 9 10
运算符 ( ) , [ ] , < > , • , LENGTN , WIDTH , SIZE , MASK PTR , OFFEST , SEG , TYPE , THIS , CS: , DS: , ES: , SS: HIGH , LOW * , / , MOD , SHL , SHR +,- EQ , NE , LT , LE , GT , GE NOT AND OR , XOR SHORT
段名 ends ;指示段或者结构结束 功能:将一个逻辑段定义成一个整体 规定段所属的段寄存器 assume cs:段名, ds:段名, ss:段名,ES:段名 功能:定义4个逻辑段,指明段和段寄存器的 关系
3 段定义语句
定义类型是对该段起始位置的定义。参数有:
PARA,BYTE,WORD,PAGE
格式2:变量名 助记符 n DUP(操作数,操作数….)
N必须是正整数,表示括号内操作数的重复次数
例如:
DA1 DB 10H, 23H ; 变量DA1装入10H , 23H
DA2 DW ‘OK’
; 字符串‘OK’的ASCII码装入DA2开始的存 储单元中

四章汇编语言程序设计ppt课件

四章汇编语言程序设计ppt课件
指令助记符:MOV,ADD,…. 指示性(伪指令)操作符:DB,DW,SEGMENT,
ENDS,ASSUME,END ,…. 保留字:SEGMENT ENDS OFFSET SIZE DB
DW DD MOV PUSH ADD SUB MUL DIV INC DEC LOOP PROC ENDP CALL RET END
类别名
CODE、DATA、STACK(同名同类别段连续存放)
第4章 汇编语言程序设计
伪操作命令之三:段定义伪指令
段寄存器说明伪指令ASSUME
ASSUME 段寄存器名:段名[段寄存器名:段名[…..]]
例:
CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK
MAIN:
……
CODE ENDS ENDS MAIN
;指定第一条要执行的指令标号
注:1、该伪指令用于明确用SEGMENT定义的段的类型, 使编译程序能生成目标代码程序。
2、在源程序中,该伪操作放在可执行程序的前面。 3、该指令没有给段寄存器赋予实际的初值。这项工作要通
过写指令来完成,其中代码段不需要赋值。
+、-、*、/、MOD、SHL、SHR 都可应用于数字运算。 +、- 可以用于表示存储器操作数的地址,或两个存储器
单元(同一段内)的地址偏移量之差。 例:SUM - 2
CYCLE - GO
第4章 汇编语言程序设计
运算符之二:逻辑运算符
AND、OR、XOR、NOT 按位的逻辑运算 例:IN AL,PORT_VAL
DATA2 DB 0C1H,36H,9EH,0D5H,20H;加数
DATA ENDS;数据段结束
CODE SEGMENT;定义代码段

第5章 汇编语言基本结构程序设计PPT课件

第5章   汇编语言基本结构程序设计PPT课件

(1)单条件转移指令
根据某个标志位的值进行转移。
① JZ/JE OPR ZF=1转移
② JNZ/JNE OPR ZF=0转移
③ JS OPR ④ JNS OPR
SF=1转移 SF=0转移
⑤ JO OPR
OF=1转移
06.11.2020
8
⑥ JNO OPR
OF=0转移
⑦ JP/JPE OPR PF=1转移
3
5.3 分支程序设计 5.3.1 转移指令
分支程序就是根据条件的不同完成不同功能的程序, 编写分支程序要用到转移指令(也叫分支指令)。转移 指令分无条件转移指令和条件转移指令。
06.11.2020
4
1.无条件转移指令
无条件转移指令的功能是无条件转移到指定的地址 去执行从该地址开始的指令。
转移分为2类:段内转移和段间转移,段内转移是 指在同一代码段范围内的转移,只改变IP寄存器的内容, CS的值保持不变;段间转移是指在不同代码段之间的转移 ,既要改变IP的值,也要改变CS的值。
(5)段间间接转移 格式:JMP DWORD PTR OPR 功能:IP←(EA), CS←(EA+2)
OPR是一个双字存储器,低字存放转移目标的偏移地址 ,高字存放转移目标的段地址。
06.11.2020
7
2.条件转移指令
根据条件满足与否决定是否转移,满足条件转到目标处执
行,不满足条件顺序执行下一条指令,从而形成分支。条件 转移指令只能实现段内转移,而且转移范围是-128 ~ +127 。
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,AD1

第4章汇编语言程序设计ppt课件

第4章汇编语言程序设计ppt课件

DATA1
11
22
33 44
DATA2
11
00
22
00
44
33
DATA3
22
0
0
0
22
0
0
0
XX
66
55 44 33
28
数据定义伪指令的几点 说明
伪指令的性质决定所定义变量的类型;
定义字符串必须用DB伪指令
例:
DATA1 DB ‘ABCD’,66H
41H
‘A’
42H
‘B’
43H
‘C’
44H
‘D’
AH
DISN:T D2X1H
功能号OAH 字符串在内存中的存放地址
58
2. 定义字符缓冲区
用户自定义缓冲区格式:
N1 N2
存放字符个数:≤255
存放键入的字符 整个缓冲区
实际键入字符数 最大可键入字符数
0DH
59
输入字符串程序段
DAT1 DB 20,?,20 DUP(?)

LEA DX,DAT1 MOV AH,0AH INT 21H
定义的变量为4字型(8字节)
定义的变量为10字节型
26
数据定义伪指令例
DATA1 DB 11H,22H,33H,44H DATA2 DW 11H,22H,3344H DATA3 DD 11H*2,22H,33445566H
以上变量在内存中的 存放形式
27
数据定义伪指令例_变量在内存中的
分布
DSEG SEGMENT DATA1 DB 1,2, 3 DUP(?) DATA2 DW 1234H
DSEG ENDS ESEG SEGMENT

《汇编语言》PPT课件

《汇编语言》PPT课件



理 例3-3
ORG 1000H

DW
1234H
应 用 编
SJ_DATA: DW
56H,2000
经汇编后,从地址1000H处存贮器的内容为:

〔1000H〕= 12H

〔1001H〕= 34H
〔1002H〕= 00H
〔1003H〕= 56H
〔1004H〕= 07H
§3.1.2 汇编伪指令
湘 四、EQU 赋值伪指令 潭 字符名称 EQU 项〔数或汇编符号〕
;〔35H〕 A
MOV DPTR,#DPTRA ;0AA00H DPTR
§3.1.2 汇编伪指令
湘 七、BIT定义位地址符号伪指令 潭 字符名称 BIT 位地址
大 学
这里的"字符名称"与标号不同〔其后没有冒号〕,但
单 它是必须的,其功能是把BIT之后的"位地址"值赋给"字
片 机
符名称".
原 理
例3-6:
潭 大
[标号:] DB X1、 X2 … Xn

ORG 1000H

DB

SJ-DATA: DB
0AAH 25,25H

ZFC-DATA: DB
'MCS-51'

理 及 应 用 编 著
经汇编后,从地址1000H处存贮器的内容为: 〔1000H〕= AAH 〔1001H〕= 19H 〔1002H〕= 25H 〔1003H〕= 4DH

编 著 组
eg: MOV MOV MOV
P1,A 70H ,R2 0E0H,78H
; MOV 90H,A ; (A)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
此例为计数循环
例: 将十进制数(number)转换为八进制数
方法:(number)/8 保留余数,除法操作循环次数事先未知,
仅当商为0时,循环结束。此例-为条件循环
n1e1 xt
(DX)= 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 1. 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 (ROL DX,1 ) 0 0 0 0 0 0 0 1 (AND ?,1) 00000000 + 0 0 1 1 0 0 0 0 (ADD ?,30H) 00110000 2. 0 0 0 0 1 0 0 0 1 1 0 0 0 0 0 1 (ROL DX,1) 0 0 0 0 0 0 0 1 (AND) 00000001 + 0 0 1 1 0 0 0 0 (ADD)
LOOP AGAIN
DEC CX
- JNZ AGAIN
9
例: 求存放在STRS存储区中的字符串长度。
设: STRS
DB MOV MOV
string$ CX,80 SI,-1
MOV
AL,$
AGAIN: INC
SI
CMP
AL,STRS[SI]
LOOPNE AGAIN
MOV
LEN,SI
循环程序设计方法
保证循环正常执行和结束的条件:
正确地初始化循环控制计数和初始条件
❖ 正确地检测循环条件
必须保证能达到循环结束条件 (例如在循环体内有修改循环
控制值的指令)
-
8
指令系统提供了专门用于循环结构的循环控制指令,更加 简便的地实现循环结构。
循环控制指令 循环控制指令的转移范围为:-128~+127字节(段内短转移)
并转换为:
30 31 30 30 30 30 31 30 30 30 31 31 30 30 30 30
先将(num)->(DX),再讨论如何分离开各二进制位并转 换为ASCII码,分析如下:
根据上述分析,将(DX)中的二进制数依次循环左移1位, 可以使得各个数位的分离(AND)和ASCII码转换(ADD)操 作完全相同,便于组织循环,并且循环次数已知(16次)。
……
00110001
16. 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 (ROL DX,1) 0 0 0 0 0 0 0 1 (AND)
00000000 + 0 0 1 1 0 0 0 0 (ADD)
00110000
binbuf 30 31 30 30 30 30 31 30- 30 30 31 31 30 30 30 30 12返回
-
4
第二节:循环结构
初始化 循环体循环的初始状态
循环的工作部分 及修改部分
计数控制循环 条件控制循环
5
循第环一与章分支基程础序知设识计
-
6
循第环一与章分支基程础序知设识计
-
7
循环程序设计
根据条件重复执行一段指令就构成了循环程序结构 。
例:将ARRAY数组中的50个数求和,并将和存入字变量S中 。
当型循环与直到型循环:
例 统计AX中的二进制数含“1”的总个数,程序段如下:
MOV AGAIN: AND
JZ SAL JNC INC NEXT: JMP QUIT :
CX,0 AX,AX QUIT AX,1 NEXT CX AGAIN
;(AX)=0? ;是,退出循环 ;否,(AX)的最高位移入CF位 ;CF≠1时,转向NEXT再次循环 ;CF=1,计数器(CX)←(CX) +1 ;再次循环
循第环一与章分支基程础序知设识计
编制一个汇编语言程序的步骤
1)分析题意,确定算法。这一步是能否编制出高质量程序的关键,因此不应 该一拿到题目就急于写程序,而是应该仔细地分析和理解题意,找出合理 的算法及适当的数据结构。
2)根据算法画出程序框图。这一点对初学者特别重要,这样做可以减少出 错的可能性。画框图时可以从粗到细把算法逐步地具体化。
控制循环的方法可分为两类:
计数循环——用于循环次数已知的情况
条件循环——用于循环次数不确定的情况
-
10
例:将字变量num中的数按16位二进制数位分离开,逐位转换 为ASCII码,并从最高有效位开始依次逐位存入以binbuf为起 始地址的16个字节单元中。
设:(num)= 4230H 要求将 4230H= 0 1 0 0 0 0 1 0 0 0 1 1 0 0 0 0 B 逐位分离开
概述
二、程序的基本结构 1、顺序结构程序 2、分支结构程序 3、循环(重复)结构程序
顺序结构 分支结构 循环(重复)结构
-
3
第一节 顺序结构程序设计
• 顺序结构程序完全按指令书写的前后顺 序执行每一条指令,是最基本、最常见 的程序结构
• 特点
顺序性、结构简单,只适应于简单问题 的处理
例1 计算
例2 移位
(1)LOOP指令
格式:LOOP 标号 操作: 如图所示 (2)等于继续循环指令
格式:LOOPZ/LOOPE 标号
否 (CX) ≠≠00且且ZZFF==10??
(CX)≠ 0?

执行循环体 退出循环
(3)不等于继续循环指令 格式:LOOPNZ/LOOPNE 标号
(CX) (CX) -1
在前面的求和例子中,可用一条循环指令代替两条指令:
MOV MOV MOV AGAIN : ADD ADD
AX,0
;累加求和寄存器清0
BX,OFFSET ARRAY ;数组始址送BX中
CX,50
;循环控制计数初始化
AX,[BX]
BX,2
;数组地址增2,BX指向下一个元素
DEC CX
;循环控制计数减1
JNZ AGAIN MOV S,AX
;计数不为0时继续循环 ;计数为0时循环结束,和存于S中
分析问题
序的设计是汇编语言程序设计的基
本内容。
寻找解决问题的 思路、方法、算法
在此基础上还要掌握汇编语言 程序设计的基本方法和技巧 ,包
描述算法
括递归子程序设计、COM和EXE 格式程序的结构和特点、多模块
编写程序实现算法
程序设计方法等。
设计测试数据
和预期计算结果
程序设计的解题基本步骤如下:
-
上机调试程序 2
3)根据框图编写程序。
4)上机调试程序。任何程序必须经过调试才能检查出你的设计思想是否正 确以及你的程序是否符合你的设汁思想。在调试程序的过程中应该善于利 用机器提供的调试工具(如DEBUG)来进行工作,你会发现它会给你提供 很大的帮助。
-
1
概述
一、汇编语言程序设计的基本方法
顺序、分支、循环程序和子程
相关文档
最新文档