汇编语言程序设计第五章
合集下载
第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课件

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章

6.整理文档
程序设计的结果包括两大部分,一是程序,二是文档。这 里讲的文档主要是包括各个设计阶段的规格说明书,以及用户 使用手册等。这是用户使用、维护程序的依据。 7.软件测试
测试是保证软件质量的重要手段,其主要方式是在设计测
试用例的基础上检验软件的各个组成部分。首先是进行单元测 试,查找各模块在功能和结构上存在的问题并加以纠正。其次 是进行组装测试,将已测试过的模块按一定顺序组装起来。最 后按规定的各项需求,逐项进行有效性测试,决定已开发的软 件是否合格,能否交付用户使用。
4.编码 这个阶段也称为程序编制或编程,主要是选择一种程序设
计语言,并用此语言具体地实现所设计的算法。
5.调试与排错
通过调试来排除程序中的错误,保证程序的正确。一般要作
静态检查和动态运行。静态检查包括人工检查和上机进行语法
检查;动态运行就是根据程序在工作中所有可能的情况,例如,
输入各种不同的初始数据,检查程序执行是否正确。
例5-1 若内存的数据段中,有缓冲区BUFFER,存取数据的
规则是先存储一个16位带符号的被除数,再存储一个16位带符
号的除数,接着存储商,最后存储余数。 DATA SEGMENT
BUFFER DW 812DH
DW 013CH DW ? DW ? DATA ENDS
;被除数
;除数 ;存商 ;存余数
STACK
JNC LABEL JO JNO JS LABEL LABEL LABEL
JNS LABEL
JP/JPE LABEL JNP/JPO LABEL
SF=0
PF=1 PF=0
为正时转移
结果为偶时转移 结果为奇时转移
(2) 根据两个无符号数比较结果来决定转移的条件转移指令
第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章 汇编语言程序

Y
条件满足?
N
处理段
例5-5 设内部RAM30H,31H单元存放两个无符号数, 将大数存在31H,小数存于30H。 ORG 1000H START:CLR C MOV A,30H SUBB A,31H JC NEXT ;次序符合,返回 MOV A,30H ;交换 XCH A,31H MOV 30H,A NEXT: NOP SJMP $ END
$
5-3 分支程序
由条件转移指令构成程序判断框,形成程序分支结构。 5-3-1 单重分支程序 一个判断决策框,程序有两条出路。 两种分支结构: 例1 求R2中补码绝对值,正数不变, 影响条件 负数变补。
MOV A,R2 JNB ACC.7,NEXT;为正数? CPL A ;负数变补 INC A MOV R2,A NEXT:SJMP NEXT ;结束
五、对源程序进行交叉汇编得到机器代码; 反汇编 —— 分析现成产品的程序,要将二进制 的机器代码语言程序翻译成汇编语言源程序。
六、程序调试。
通过微计算机的串行口(或并行口)把机器代 码传送到用户样机(或在线仿真器)进行程序 的调试和运行。
5.1.3评价程序质量的标准
(1)程序的执行时间。 (2)程序所占用的内存字节数。 (3)程序的逻辑性、可读性。 (4)程序的兼容性、可扩展性。 (5)程序的可靠性。
方法二:采用除10H取余数将BCD拆开 ORG 1000H MOV A,20H; 2B 1T MOV B,#10H ; 3B 2T DIV AB ; 1B 4T ORL B,#30H ; 3B 2T MOV 22H,B ; 3B 2T ORL A,#30H; 2B 1T MOV 21H,A ; 2B 1T SJMP $ END;7条指令、16个内存字节、13个机器周期。
汇编语言程序设计 第五章 课件

(3)串搜索指令 SCAS
LEA DX,ASS MOV AH,10 INT 21H LEA DI,ASS+2 ;输入串首址→DI MOV CL,ASS+1 ;输入串长度→CX MOVZX CX,CL MOV AL,′A′ ;计数器清零 MOV BX,0 P: REPNE SCASB ;查找字符‛A” JE A ;查到字符‛A”转A处执行 ;全部查完转结束 JMP OUT1 ;所有判断完否 A: CMP CX,0 JE OUT1 ;全部查完转结束 CMP BYTE PTR [DI], ‘M’ ;判断‛A”后的字符为‛M”否 JNE B ;不是转B处执行 INC BX ;是‛AM”计数器加1 B: JMP P ;未完转P继续判断 OUT1:MOV AH,4CH ;返回操作系统 INT 21H CODE ENDS END START
(1)串操作指令MOVS、CMPS、SCAS的 使用格式及功能; (2)简单宏指令的定义与调用方式; (3)模块程序设计的方法。
第五章
程序设计的其它方法与技术 三、本章学习的难点:
(1)MOVS与MOV、CMPS与CMP功能上
的差别及串操作指令的正确使用方法; (2)宏指令的定义与调用方式; (3)模块之间的组合、定位及通信方式; (4)模块化程序设计技术。
(5)存储字节/字/双字指令 STOS
●格式: ●功能:
STOS
OPD 或
STOSB 往字节串中存数 STOSW 往字串中存数 STOSD 往双字串中存数
⑴ 字节操作:(AL)→ ES:[DI]/[EDI] 字操作: (AX)→ ES:[DI]/[EDI] 双字操作:(EAX)→ES:[DI]/[EDI] 即将AL(或AX、EAX)中的数据送入DI/EDI所指的目的串中的字节(或 字、双字)存储单元中。修改指针DI/EDI,使之指向串中的下一个元素。 ⑵ 修改串指针,使之指向下一元素,修改方式为: i.当DF=0时,(SI)/(ESI)增量1(字节操作)或2(字操作) 或 4(双字操作)。 ii.当DF=1时,(SI)/(ESI)减量1(字节操作)或2(字操作) 或 4(双字操作)。 说明:该指令执行后,并不影响标志位,因而它一般只带REP重复前缀, 用来将一片连续的存储字节(或字)单元臵相同的值。
第五章_汇编语言程序设计基础

3
§5-1 汇编语言的基本概念
汇编 语言 源程 序 汇编 程序 A ss em bl er 机器 语言 目标 程序
汇编语言指令与机器指令之间有一一对应的关系,所以汇 编语言与具体的机器密切相关,是一种面向机器的语言。 不同机器(CPU)的汇编语言不同。 为方便编程,实际的汇编程序常还提供一些除机器指令以 外的命令,被称为伪指令。伪指令(Pseudo Instruction) 仅在汇编过程中指导汇编程序如何生成目的代码,自己本 身并没有对应的机器代码。 汇编语言的指令(语句)包含两类:硬指令或真指令(指 令语句)和伪指令(指示性语句) 。
12
§5-2 汇编语言的基本语言成分
6. 综合运算符(改变属性运算符):由已存在的存储器操作数 (变量/标号)生成一个段地址和位移量相同、类型不同的新 的存储器操作数(变量/标号)。 (1) 改变变量/标号的类型: 格式: 新类型 PTR 变量/标号 功能:把PTR左边的属性赋给右边的变量/标号 [例] 设变量XVAR是字节属性,现把它的两个字节内容送 到AX中起去。 MOV AX , WORD PTR XVAR (2) 定义当前存储单元的类型: 格式: THIS 类型 功能:可用于建立新类型的存储器变量,但不分配新的存 储空间,它的段地址和位移量是汇编时的当前值。 [例] WBUFFER EQU THIS WORD BUFFER DB 100 DUP(?)
17
§5-3 汇编语言源程序的结构
(3) 段的类别属性:通常使用的类别名是‘CODE’、 ‘DATA’、‘STACK’,分别指明是代码段、数据段、 堆栈段;但也允许用户自定义类别名。类别名必须用单引 号括起来。 连接程序在组织段时,将所有同类别的段集中在一起, 进行相邻分配。 2. 段寄存器说明伪指令(ASSUME): 格式: ASSUME 段寄存器:段名 [,段寄存器:段名] 功能:告诉汇编程序,段名所指的段由那一个段寄存器寻 址,即建立段与段寄存器的关系。 说明:段寄存器的实际值(CS除外)还要由数据传送令在 执行程序时赋值。
§5-1 汇编语言的基本概念
汇编 语言 源程 序 汇编 程序 A ss em bl er 机器 语言 目标 程序
汇编语言指令与机器指令之间有一一对应的关系,所以汇 编语言与具体的机器密切相关,是一种面向机器的语言。 不同机器(CPU)的汇编语言不同。 为方便编程,实际的汇编程序常还提供一些除机器指令以 外的命令,被称为伪指令。伪指令(Pseudo Instruction) 仅在汇编过程中指导汇编程序如何生成目的代码,自己本 身并没有对应的机器代码。 汇编语言的指令(语句)包含两类:硬指令或真指令(指 令语句)和伪指令(指示性语句) 。
12
§5-2 汇编语言的基本语言成分
6. 综合运算符(改变属性运算符):由已存在的存储器操作数 (变量/标号)生成一个段地址和位移量相同、类型不同的新 的存储器操作数(变量/标号)。 (1) 改变变量/标号的类型: 格式: 新类型 PTR 变量/标号 功能:把PTR左边的属性赋给右边的变量/标号 [例] 设变量XVAR是字节属性,现把它的两个字节内容送 到AX中起去。 MOV AX , WORD PTR XVAR (2) 定义当前存储单元的类型: 格式: THIS 类型 功能:可用于建立新类型的存储器变量,但不分配新的存 储空间,它的段地址和位移量是汇编时的当前值。 [例] WBUFFER EQU THIS WORD BUFFER DB 100 DUP(?)
17
§5-3 汇编语言源程序的结构
(3) 段的类别属性:通常使用的类别名是‘CODE’、 ‘DATA’、‘STACK’,分别指明是代码段、数据段、 堆栈段;但也允许用户自定义类别名。类别名必须用单引 号括起来。 连接程序在组织段时,将所有同类别的段集中在一起, 进行相邻分配。 2. 段寄存器说明伪指令(ASSUME): 格式: ASSUME 段寄存器:段名 [,段寄存器:段名] 功能:告诉汇编程序,段名所指的段由那一个段寄存器寻 址,即建立段与段寄存器的关系。 说明:段寄存器的实际值(CS除外)还要由数据传送令在 执行程序时赋值。
汇编-循环与分支程序设计

方法A
MOV DL,0DH MOV AH,06H INT 21H MOV DL,0AH MOV AH,06H INT 21H
方法B
MOV DL,0AH MOV AH,06H INT 21H MOV DL,0DH MOV AH,06H INT 21H
记住以下ASCII值
退格:08H(即8) 空格:20H(即32) 换行:0AH(即10) 回车:0DH(即13) 0 :30H(即48) a :61H(即97) A :41H(即65)
程序流程图
开始
DX=A
DX=A+B BX=DX DX左移3位 BX左移1位
DX=BX+DX-500
结束
编写程序
DATA BUFA BUFB RESULT
SEGMENT DW ? DW ? DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: CODE
➢ 循环控制部分:判断循环条件满足与否,常用方法:计数控制、特 征值控制、地址边界控制等。
➢ 常用指令
[1].LOOP,LOOPZ/LOOPE,LOOPNZ/LOOPNE;
[2].各种跳转指令;
特别要注意循环入口和循环次数的正确设置、地址指针及循环控
制条件的修改等。否则会得不到期望的结果。
➢ 多重循环程序设计循环嵌套
INT 21H
不回显在屏幕上
2.键盘一次输入一个字符串的方法:
串地➢址例存如入(,DS在:D数X)据、调区用定参义数的为字10送符A缓H冲区如下:
MOV MOV MOV MOV MOV
DABADDAXuHSX,f,,,TfASAO0eEXfArGf,Hsc/eSASBo/tBEuu设TCufnGRf置BftTMfueILeNIr/frENE/fGT/设e/NN/r/置BTB/2uu/1存ffBHDffDuD功入eefBBBrrf能字是的er参符存段的33?数串放地偏22 为的输址移D0最入U存地APH大字入址(长符D存S?度串入)并的DX存缓入冲B区uffer的首字节;
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
单重循环程序设计
练习1.计算:S=1+2+3+4+…+200
练习2.计算:S=1+2*3+3*4+4*5+…+N*(N+1) 直到N*(N+1)>200为止。
多重循环程序设计
【例】在以BUF为首址的字存储区中存放有N个有符 号数,现需将它们按大到小的顺序排列在BUF存储 区中,试编写其程序。 我们采用冒泡排序算法从第一个数开始依次对 相邻两个数进行比较,如次序对,则不交换两数 位置;如次序不对则使这两个数交换位置。可以 看出,第一遍需比较(N-1)次,此时,最小的数 已经放到了最后;第二遍比较只需考虑剩下的 (N-1)个数,即只需比较(N-2)次;第三遍只 需比较(N-3)次,……整个排序过程最多需(N1)遍。如下面的4个数即是采用冒泡排序比较的 例子。
.486 DATA SEGMENT USE16 JUMP DB ? TAB DW P000 DW P001 …… DW P255 DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG:MOV AX,DATA MOV DS,AX
MOV BL,JUMP MOV BH,0 ADD BX,BX MOV SI,OFFSET TAB JMP WORD PTR [BX+SI] P000: …… P001: …… …… P255: …… CODE ENDS END BEG
MOV DX,OFFSET MESG1 CMP NUMBER,N1 JNC NEXT MOV DX,OFFSET MESG2 JMP DISP NEXT:CMP NUMBER,N2+1 JC DISP MOV DX,OFFSET MESG3 DISP:MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END BEG
变址循环程序设计
变址循环:将数据有规律地存放在连续的内存 单元,使数据地址在循环过程中有规律的变化, 利用变址寄存器或基址寄存器,使之指向数据 元素。 例、计算C=A1*B1+A2*B2+A3*B3+A4*B4
分支程序设计
条件成立? Y Y 语句 1 条件成立? N 语句 2
语句
(a) 简单分支
(b) 简单分支的两路分支
表达式计算结果是 情况1 情况2 …… 情况n
语句 1
语句 2
语句 n
(c) 多路分支
简单分支程序的设计
通常是在执行了算术比较指令CMP,或者逻辑比较指令 TEST之后,根据Z,S,O,P,C等各种标志位的状态进行有 条件转移。如果条件成立则跳转到指定指令开始执行, 否则忽略转移指令继续顺序的执行后续的指令。 例、将BX寄存器的内容以二进制格式显示在屏幕上。 ;FILENAME:651.ASM .486 CODE SEGMENT USE16 ASSUME CS:CODE BEG:MOV BX,5678H MOV CX,16
CODE
ADD BX,2 DEC CX JNE LOOP2 MOV CX,DX LOOP LOOP1 MOV AH,4CH INT 21H ENDS END START
程序运行后,BUF区中的内容如下: 20,9,7,6,3,2,0,-4,-8,-9,-10 思考:若要对N个无符号数按由大到小的顺 序排列,要如何修改程序?
LAST:MOV DL,‟0‟ RCL BX,1 JNC NEXT MOV DL,‟1‟ NEXT:MOV AH,2 INT 21H LOOP LAST MOV AH,4CH INT 21H CODE ENDS END BEG
简单分支程序的设计
练习:试编程实现将BUF1和BUF2两个 字单元中的内容相加,若无溢出,将其和保 存到SUM单元中,若有溢出,在屏幕上显 示“Overflow!”。
第五章 循环和分支程序设计
汇编程序编写步骤 汇编程序编写格式 循环程序设计 分支程序设计
子程序设计
字符串程序设计
编制一个汇编语言程序的步骤
(1)分析题意,确定算法 (2)根据算法,画出程序框图 (3)根据框图编写程序 (4)上机调试程序
EXE文件的编程要求
源程序可使用多逻辑段 在实模式下,每个逻辑段大小不超过64KB 适合编写大型程序
数 10 8 16 90 第一遍 10 16 90 32 第二遍 16 90 32 10 第三遍 90 32 16 10 程序流程图如图4.9所示。
32 8 8 8
程序如下: DATA SEGMENT BUF DW 3,-4,6,7,9,2,0,-8,-9,-10,20 N=($-BUF)/2 DATA ENDS STACK SEGNMENT STACK DB 200 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK
BEG:MOV AX,DATA MOV DS,AX MOV AL,0 LEA BX,BUF LAST:CMP BYTE PTR [BX],-1 JE DISP CMP [BX],AL JC NEXT MOV AL,[BX] NEXT:INC BX JMP LAST
DISP:MOV MAX+4,AL MOV AH,9 MOV DX,OFFSET MAX INT 21H MOV AH,4CH INT 21H CODE ENDS END BEG
复合分支程序设计
例、设NUMBER单元的数X以及数值N1,N2均为单 字节无符号数,请判断X的大小,并更加判断结果 分别显示:N1<=X<=N2,或X<N1,X>N2
.486 DATA SEGMENT USE16 MESG1 DB „N1<=X<=N2 $‟ MESG2 DB „X<N1 $‟ MESG3 DB „X>N2 $‟ NUMBER DB ? N1 EQU 22 N2 EQU 88 DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG:MOV AX,DATA MOV DS,AX
MOV MAX+4,AL MOV AH,9 MOV DX,OFFSET MAX INT 21H MOV AH,4CH INT 21H CODE ENDS END BEG
解二: .486 DATA SEGMENT USE16 BUF DB „QWERTYUIOP123‟ FLAG DB -1 MAX DB „MAX=“,?,0DH,0AH,‟$‟ DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA
复合分支程序的设计
练习:根据X的值给Y赋值,若X=0,则Y=0 若X<0,则Y=1;若X>0,则Y=-1
多分支程序的设计
作用:使程序能根据不同的条件转移到多个程序分支去。 方法:(1)用寄存器间接寻址的方式实现跳跃表法。 (2)用基址变址的方式实现跳跃表法。 (3)用变址寻址方式实现跳跃表法。
例、 设计一个256分支的段内转移程序,设:JUMP单元有一个数X, 若X=0,转移到标号为P000的程序段; 若X=1,转移到标号为P001的程序段; …… 若X=255,转移到标号为P255的程序段;
汇编源程序的书写结构形式2
堆栈段名 SEGMENT STACK 用变量定义预置的堆栈空间 堆栈段名 ENDS 数据段名 SEGMENT 用变量定义预置的数据空间 数据段名 ENDS 代码段名 SEGMENT 过程名 PROC F A R ASSUME 定义的寻址关系 START:PUSH DS SUB AX,AX PUSH AX 填充数据段 . . . RET 过程名 ENDP 代码段名 ENDS END START
START: MOV AX,DATA MOV DS,AX MOV CX,N DEC CX LOOP1: MOV DX,CX MOV BX,0 LOOP2: MOV AX,BUF[BX] CMP AX,BUF[BX+2] JGE L XCHG AX,BUF[BX+2] MOV BUF[BX],AX
L:
字符串操作程序设计
例、用REP MOVSB指令把字符串S1从一个数据段传送 到辅助数据段的串S2中. DATA1 SEGMENT S1 DB „ABCDEFG‟ COUNT EQU $—OFFSET S1 DATA1 ENDS DATA2 SEGMENT S2 DB 27 DUP(?) DATA2 ENDS CODE SEGMENT
顺序程序设计
例.写出计算Y=A*B+C-18的程序,题中A,B, C是带符号的8位二进制数。
顺序程序设计
练习:试编制一程序,求出下列公式中的Z 值,并存放在RESULT单元中: Z=((X+Y)*8-X)/2 其中X,Y的值分别存放在VARX, VARY单元中。
循环程序设计
循环程序的结构 循环程序的设计方法
(COM文件)
汇编源程序的书写结构形式1
堆栈段名 SEGMENT STACK 用变量定义预置的堆栈空间 堆栈段名 ENDS 数据段名 SEGMENT 用变量定义预置的数据空间 数据段名 ENDS 代码段名 SEGMENT ASSUME 定义的寻址关系 START:填充数据段 . . . MOV AH,4CH INT 21H 代码段名 ENDS END START
源程序只允许使用一个逻辑段,即代码段,不允许设置 堆栈段; 数据可以集中设置在段的开始或者末尾; 程序的启动指令必须存放在偏移地址为100H的单元; 代码段长度小于64KB,适合于编写中小型程序。
例 显示10行HELLO
;FILENAME: 42.ASM .486 CODE SEGMENT ASSUME CS:CODE ORG 100H BEG: JMP START MESG DB „HELLO‟,0DH,0AH,‟$‟ START: MOV CX,10 LAST : MOV AH,9 MOV DX,OFFSET MESG INT 21H LOOP LAST MOV AH,4CH INT 21H CODE ENDS END BEG