汇编 第五章基本结构程序设计参考答案.ppt

合集下载

第5章 汇编语言程序设计20PPT课件

第5章 汇编语言程序设计20PPT课件
第5章 汇编语言程序设计
第5章 汇编语言程序设计
5.1 汇编语言的基本概念
汇编语言是一种采用助记符表示的程序设计语言, 即用助记符来表示指令的操作码和操作数,用标 号或符号代表地址、常量或变量。
汇编语言编写的程序能够直接利用硬件系统的特 性直接对位、字节、字寄存器或存储单元、I/O端 口进行处理,同时也能直接使用CPU指令系统提供 的各种寻址方式。
(小于)、GT(大于)、LE(小于等于)、GE (大于等于) (4)分析运算符:SEG、OFFSET、TYPE、SIZE和 LENGTH (5)合成运算符:PTR、THIS、SHORT
5.3 伪指令语句
5.3.1 数据定义伪指令 5.3.2 符号定义伪指令 5.3.3 段定义伪指令 5.3.4 模块定义与连接伪指令 5.3.5 处理器选择伪指令
汇编程序时最早也是最成熟的一种系统软件。 汇编程序的功能如下:
用汇编语言编 写的源程序
汇编程序
目标程序
5.2汇编语言源程序的格式
5.2.1 分段结构 5.2.2 汇编语言语句的类型和格式
5.2.1 分段结构
汇编语言源程序的结构是分段结构形式,一个汇 编语言源程序由若干段(SEGMENT)组成,每个段 以SEGMENT语句开始,以ENDS语句结束。整个源 程序的结尾是END语句。
5.3.1 数据定义伪指令
数据定义伪指令的用途是定义一个变量的类型, 给操作数赋值,或者仅给变量分配存储单元而不 赋予特定的值
数据定义伪指令的一般格式为:
[变量名] 作数……]
伪指令定义符
操作数[,操
数据定义伪指令定义符后面的操作数可以是 常数、表达式或字符串,但每项操作数的值不能 超过由伪指令定义符所定义的数据类型限定的范 围。

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

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

汇编语言 源程序
汇编
目标程序
汇编程序
一一对应
汇编语言的指令
机器语言的指令
汇编语言程序设计的特点:
➢ 汇编语言是面向机器的语言,CPU不同的机器有不同 的汇编语言
➢ 可以充分利用机器的硬件功能和结构特点
➢ 可有效地加快程序的执行速度,减少目标程序所占用 的存储空间
➢ 可以对输入/输出端口进行控制,实时性能好 ➢ 汇编语言程序移植性、通用性、可读性差
第 5 章 程序设计及汇编语言
内容安排
一. 程序设计步骤 二. 程序设计 三. 汇编语言及汇编程序 四. 汇编语言源程序格式及实例 五. 上机操作
§5.1 程序设计步骤
(1〕分析问题 (2〕建立数学模型 (3〕确定算法 (4〕绘制程序流程图 (5〕内存空间分配 (6〕编制程序与静态检查 (7〕程序调试〔实验)
[名字] DW <表达式或数据项表> 功能:表达式或项表中的每一项是一个/两个字
节数,他们从符号名地址开始按字节连续存放, 如:直D到1 表中DB数据12H项, 结12H束 12H
D1 DB 3 DUP (12H) MOV AX, D1
注意:① 表达式或数据项表多于一项时,项与项之间用 逗号“,”或空格分隔
MOV BL,0FFH ;将FFH送入BL寄存器
LOut: MOV AL,BL
OUT 73H,AL ;将结果的标志数据输出到 73H端口
HLT
;暂停
Lw10: MOV BL,00H
JMP LOut
L10to20: MOV BL,88H
JMP LOut
3. 循环程序
强制CPU重复执行某一指令系列〔程序段〕的一种程序 结构形式
组成:

汇编语言程序设计(第二版)第五章PPT课件

汇编语言程序设计(第二版)第五章PPT课件

MACRO retnum mov al,retnum mov ah,4ch int 21h ENDM
;;带有形参retnum ;;宏定义中使用参数
宏调用
宏名 [实参表]
start: mainbegin dispmsg string mainend 0 end start
;宏调用,建立DS内容 ;宏调用,显示字符串 ;宏调用,返回DOS
过程名 ENDP
➢要 调 用 带➢参过数程声过明程伪定指义令:的用过于程事,先声不明应过采程用的结构 CALL指令过,程因名为比较PR烦O琐TO 调用距离 语言类型, 参数:类型 ➢应该采用过程调用伪指令INVOKE ➢使 用 INV➢O过K程E调伪用伪指指令令的 前 提 是 需 要 用 PROTO伪指令对过程IN进VO行K声E 明过程名,参数,...
mov al,_a
imul _c
mov cx,4
imul cx
例5.1-1/2
;bx中为b2 ;ax中为4ac
例5.1-2/2
.if sword ptr bx >= ax ;比较二者大小 mov tag,1
;第一分支体:条件满足,tag←1 .else
mov tag,0 ;第二分支体:条件不满足,tag←0 .endif .exit 0
mov bx,ax mov ax,0 .ELSE * jmp @C0003 *@C0001: dec ax .ENDIF *@C0003:
.data
_a
sbyte ?
_b
sbyte ?
_c
sbyte ?
tag byte ?
.code
.startup
mov al,_b
imul al

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

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

;段分配
START:MOV AX,DATA MOV DS,AX MOV AL,BUF1 ADD AL,BUF2 MOV SUM,AL MOV AH,4CH INT 21H
CODE ENDS END START
;填装数据段寄存器DS ;取第一个加数 ;和第二个加数相加
代 码 段
;返回DOS状态 ;CODE段结束 ;整个源程序结束
第5章 汇编语言程序设计
5.1 汇编语言程序格式 5.2 常用伪指令 5.3 汇编语言的编写 5.4 DOS功能调用 5.5 汇编语言设计
最新课件
教学重点
本章介绍程序结构、伪指令、DOS功能调用。 重点:汇编语言程序的基本结构;
伪指令及其使用方法; DOS功能调用; 基本的汇编语言程序设计方法。 难点:DOS功能调用的应用 汇编语言程序的设计
算术运算符
运 算
逻辑运算符

及 关系运算符

达 式
分析运算符
综合运算符
+、—、*、/、MOD
与数学运算符的意义相同。
A取N模D是、取OR余、数N。OT、XOR E例运Q:算、82结NEM果、O是LD一T、1个6G常;T数、结.L果E、为G2 E 两个2表0H达M式O比D较7时; ,结表果达为式4表示 方法/性质要相同 关时SSEI系Z,GE成为、、立全OT,YF0PF结SE果ET为、全LE1;NG不T成H、立 例把T规等偏H如存定价移IS:储存于地、指单储址MP令元OT单RV地M元OB址的XV分,性B解0X质;,为3段2地EQ址4和5
作用:由编程者按照一定的规则来定义的一种较“宏 大”的指令,包括多条指令或伪指令 。
最新课件
例题1
SEGMENT
ENDS

《汇编语言程序设计》第5章基本汇编语言程序设计.ppt

《汇编语言程序设计》第5章基本汇编语言程序设计.ppt
汇编语言程序设计的基本步骤: 1.分析题意,确定数据结构和算法 2.根据算法绘制程序流程图 3.根据流程图编写程序 4.调试程序
5.1 汇编语言程序的设计步骤
汇编语言程序设计的基本步骤
例5.1 在100个字的无符号整数字中找出最 大数。
5.1 汇编语言程序的设计步骤
汇编语言程序设计的基本步骤
5.2 顺序结构的程序设计
(2)输出:在8086.8088指令系统中,字符的输出是由 DOS21H中断的02H子功能来实现的,命令序列如下: MOV AH,02H INT 21H 其作用是将寄存器DL中所存放的字符进行显示输出, 故在执行该命令序列之前,应先将被输出字符的ASCII 码存入DL中。
程序的基本结构
1.顺序结构 2.分支结构 3.循环结构
ห้องสมุดไป่ตู้
5.1 汇编语言程序的设计步骤
程序的基本结构 1.顺序结构
5.1 汇编语言程序的设计步骤
程序的基本结构 2.分支结构
5.1 汇编语言程序的设计步骤
程序的基本结构 3.循环结构
5.1 汇编语言程序的设计步骤
第5章基本汇编语言程序设计
1.分析题意,确定数据结构和算法 (1)初始化,建立一个数据指针指向数据区的首
地址; (2)将第一个数存入寄存器(如AX)中; (3)调整数据指针,使其指向下一个数; (4)将数据指针所指的数与寄存器AX的内容相比
较,如果该数较大,则将其存入AX,否则丢掉; (5)重复执行(3)、(4)两步,直至将数组中
分析:比较两数可用CMP指令,而带符号数的比 较结果可由标志位SF、OF来确定,选用的转移 指令应为JG、JL等。
第5章基本汇编语言程序设计
5.1 汇编语言程序的设计步骤 5.2 顺序结构的程序设计 5.3 分支结构的程序设计 5.4 循环结构的程序设计 5.5 子程序设计

第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

汇编语言程序设计(第四版)第5章【课后答案】

汇编语言程序设计(第四版)第5章【课后答案】

汇编语言程序设计第四版【课后习题答案】--囮裑為檤第五章高级汇编语言程序设计5.1 条件表达式中逻辑与“&&”表示两者都为真,整个条件才为真,对于程序段:.if (X==5) && (ax!=bx)inc ax.endif请用转移指令实现上述分支结构,并比较汇编程序生成的代码序列。

解:cmp X, 5je abcjmp doneabc: cmp ax, bxjne cdejmp donecde: inc axdone:....5.2条件表达式中逻辑与“||”表示两者之一为真,整个条件就为真,对于程序段:.if (X==5) || (ax!=bx)inc ax.endif请用转移指令实现上述分支结构,并比较汇编程序生成的代码序列。

解:cmp X, 5je abcjmp donecmp ax, bxjne abcjmp doneabc: inc axdone: ....5.3、对于程序段:.while ax!=10mov [bx],axinc bxinc bxinc ax.endw请用处理器指令实现上述循环结构,并比较汇编程序生成的代码序列。

5.4、对于程序段:.repeatmov [bx],axinc bxinc bxinc ax.until ax==10请用处理器指令实现上述循环结构,并比较汇编程序生成的代码序列。

5.5、宏是如何定义、调用和展开的?解:宏定义采用一对伪指令实现,格式如下(其中方括号表示可选):宏名macro [形参表]宏定义体endm宏调用时,利用宏名带上实参即可,格式如下:宏名[实参表]5.6、宏定义中的形式参数有什么特点,它是如何进行形参和实参结合的?解:宏的参数功能非常强大,即可以没有参数,也可以带有一个或多个参数;而且参数的形式非常灵活,可以是常量、变量、存储单元、指令或它们的一部分,还可以是表达式等。

宏展开时的形参与实参结合是用位置匹配的实参对形参进行取代。

精品PPT课件--第5章汇编语言程序设计

精品PPT课件--第5章汇编语言程序设计
指示性语句的格式为:
名字 伪指令 操作数1,操作数2,…,操作数n ;注释
注:各部分之间至少要用一个空格作为分隔符。
指示性语句由汇编程序执行。它指出汇编程序应如何对源程序进行汇编, 如何定义变量、分配存储单元以及指示程序开始和结束等。指示性语句无 机器码指令与其相对应。
指示性语句汇编时不生成机器码。
显然,第二种写法要比第一种写法要好。
2021/1/20
23
5.3 伪操作命令
由汇编程序执行的指令,它本身不被汇编成机器指令。 常用的伪指令有:
• 数据定义伪指令 • 符号定义伪指令 • 段定义和段寄存器指定伪指令 • 过程定义伪指令 • 结束伪指令
2021/1/20
24
5.3.2 数据定义伪指令
➢ 变量在程序中作为存储器操作数被引用。 •标号和变量名的使用规则
– 组成:A-Z(不分大小写), 0-9, ?@ . _ $ – 不能以数字开头 – 长度小于31个字符 – 不能与保留字(指令助记符、伪指令、预定义符号等)重名 – 不能重复定义 例如: 正确的:LP1, AGAIN, NEXT, _GO, OK_1
(1)算术运算符—— +、-、*、/,MOD
➢ 用于数字表达式,例: MOV AX,4*1024
汇编后的形式为:
MOV AX,4096
➢ 用于地址表达式,例: LEA SI,TAB+3
若TAB的偏移地址为1000H,则汇编后的形式为:LEA
SI,1003H
2021/1/20
16
(2)逻辑运算符—— AND、OR、XOR、NOT
INT 21H
;返回DOS
CODE ENDS
;代码段结束
END START
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BUF DW 16
NUM DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN:MOV AX,DATA
MOV DS, AX
MOV AX, [BX]
MOV BX , OFFSET AQTAB
MOV NUM , AX
MOV AX, BUF
INC BUF2
DATA ENDS
JMP EXIT
CODE SEGMENT
JIAOHUAN:MOV BUF1,BL
ASSUME DS:DATA
MOV BUF2,AL
ASSUME CS:CODE
EXIT: MOV AH,4CH
START:MOV AX,DATA
INT 21H
MOV DS,AX
MOV SI,OFFSET BUF
MOV CX, CNT
MOV AX, 0
MOV SUM, AL
MOV AH, 4CH
INT 21H
CODE ENDS
END START
P102_58
DATA SEGMENT
X DW -123
Y DW 50
Z DW 1234H
DATA ENDS
CODE SEGMENT
CODE ENDS
MOV AL,BUF1
END START
MOV BL,BUF2
TEST BL,01H
JZ EXIT ;BUF2中为偶数
TEST AL,01H
JZ JIAOHUAN
;BUF1中偶数,BUF2为奇数
P102_57
DATA SEGMENT
BUF DB 30H,02H,10H,11H,56H,78H,65H,54H,85H,19H
JZ OS1 ;BUF1中为偶数
TEST BL,01H
JZ EXIT ;BUF1中奇数,BUF2为偶数
INC BUF1 ;均为奇数
INC BUF2
JMP EXIT
OS1: TEST BL,01H
JZ EXIT ;均为偶数
MOV BUF1,BL ;BUF1中偶数,BUF2为奇数
MOV BUF2,AL
SUB CX,AX
SBB BX,DX
MOV RESULT,CX
MOV RESULT+2,BX
MOV AH,4CH
INT 21H
CODE ENDS
END START
思考:用移位指令代替乘法 指令要注意什么问题
P102_5.6参考答案1
开始
N
Y
BUF1偶数?
Y
Y BUF2偶数?
BUF2偶数?
N
BUF1中数+1 BUF2中数+1
ASSUME DS:DATA,CS:CODE
START:MOV AX,DATA
MOV DS,AX
MOV AX,X
MOV BX,Y
MOV CX,Z
CMP AX,BX
JGE L1
CMP BX,CX
JL L2
MOV AX,BX
JMP EXIT
L2: MOV AX,CX
JMP EXIT
L1: CMP AX,CX
ASSUME CS:CODE, DS:DATA START: MOV AX,DATA
MOV DS,AX
MOV SI,OFFSET STRING MOV DI,OFFSET NUM MOV BP,OFFSET BCHAR MOV CX,OFFSET LCHAR MOV DX,OFFSET OTHER LOP1: MOV AL,[SI]
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
P102_5.6参考答案2
开始
N
Y
BUF2偶数?
Y BUF1偶数? N
BUF1与BUF2交换
BUF1+1;BUF2+1
结束
DATA SEGMENT
BUF1 DB 30H
INC BUF1 ;均为奇数
BUF2 DB 23H
第五章课后习题参考答案 P86_4.16 若在数组字变量AQTAB平方表中有
十进制数0~20的平方值,从表中找出16的平 方值,结果送字变量NUM单元中。
1
参考答案
DATA SEGMENT
AQTAB DW 0,1,4,9,16,25,36,49,64,81,100,121,144
DW 169,196,225,256,289,324,361,400
N
BUF1与BUF2交换
结束
DATA SEGMENT
BUF1 DB 30H
BUF2 DB 23H
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:MOV AX,DATA
MOV DS,AX
MOV AL,BUF1
MOV BL,BUF2
TEST AL,01H
参考程序1: DATA SEGMENT
STRING DB '1$2AaDd[#' CNT EQU $-STRING-1 NUM DB CNT DUP (?) BCHAR DB CNT DUP(?) LCHAR DB CNT DUP(?) OTHER DB CNT DUP(?) DATA ENDS CODE SEGMENT
JL L2
EXIT:MOV AH,4CH
INT 21H
CODE ENDS
END START
P102_5.9从STRING开始存放一以#为结束标志的字符串,把 字符串中的字符分类,数字送入NUM开始的内存区,大写字母 送入BCHAR开始的内存区,小写字母送入LCHAR开始的内存区, 其它字符存到OTHER开始的内存区。
MOV AH,4CH
ADD AX,AX
INT 21H
ADD BX, AX
CODE ENDS
END BEGIN
P86_4.17 计算D=B*2-4AC,设A=2,B=9,C=8,结果存 放在RESUT中。(A、B、C均为有符号字节数据)
DATA SEGMENT
A DB 2
B DB 9
C DB 8
CNT EQU $-BUF
SUM DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:MOV AX,DATA
ADD1: ADD AL,[SI]
ADC AH,0
INC SI
LOOP ADD1
MOV CL,CNT
MOV DS,AX
DIV CL
RESULT DW ? ,?
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:MOV AX,DATA
MOV DS,AX
MOV AL,2
IMUL B
CWD
MOV BX,DX
MOV CX,AX
AL,A
IMUL C
MOV DX,4
IMUL DX
相关文档
最新文档