第四章程序设计技巧 汇编语言的程序设计是使用计算机系统 的指令或伪指令语句,组成求解不同问 题,实现不同算法所需的完整序列的 个工作过程。汇编语言的程序设计方法 般包含顺序、分支、循环、子程序和 宏等基本方法
第四章 程序设计技巧 汇编语言的程序设计是使用计算机系统 的指令或伪指令语句,组成求解不同问 题,实现不同算法所需的完整序列的一 个工作过程。汇编语言的程序设计方法 一般包含顺序、分支、循环、子程序和 宏等基本方法
进一步学习指令、伪指令的使用 掌握汇编语言顺序、分支、循环程序的设计方 法 ■子程序的设计与调用 ■宏结构的设计与调用 ■中断程序的设计。 I/O程序的设计 ■模块程序的设计
n 进一步学习指令、伪指令的使用。 n 掌握汇编语言顺序、分支、循环程序的设计方 法。 n 子程序的设计与调用。 n 宏结构的设计与调用。 n 中断程序的设计。 n I/O程序的设计。 n 模块程序的设计
41顺序程序结构形式 ■顺序程序又称作简单程序。指无分支 无循环、无转移的程序。它一般是根据 算法编出的完全顺序执行的程序。虽然 实际应用的程序比它复杂的多,但它是 构成程序的基础,它的质量直接影响整 个程序的质量,为此如何充分利用硬件 资源,合理地选择指令是编制简单程序 提高整个程序质量的关键
4.1 顺序程序结构形式 n 顺序程序又称作简单程序。指无分支、 无循环、无转移的程序。它一般是根据 算法编出的完全顺序执行的程序。虽然 实际应用的程序比它复杂的多,但它是 构成程序的基础,它的质量直接影响整 个程序的质量,为此如何充分利用硬件 资源,合理地选择指令是编制简单程序, 提高整个程序质量的关键
MODEL SMALL STACK 256 DATA BCD BUF DB 79H ASC_BUF DB 2 DUP() CODE STARTUP MOV AL, BCD BUF MOV BL, AL MOV CL, 4 SHR AL, CL ADD AL, 30H MOV ASC BUF, AL and BL, OFH ADD BL, 30H MOV ASC BUF+1, BL EXIT O END
.MODEL SMALL .STACK 256 .DATA BCD_BUF DB 79H ASC_BUF DB 2 DUP (?) .CODE .STARTUP MOV AL,BCD_BUF MOV BL,AL MOV CL,4 SHR AL,CL ADD AL,30H MOV ASC_BUF,AL AND BL,0FH ADD BL,30H MOV ASC_BUF+1,BL .EXIT 0 END
42分支程序 分支结构就是按照某种判断条件,从两 个或两个以上的程序段中选择一个执行 分支结构具有两种形式:双分支结构和 多分支结构
4.2 分支程序 n 分支结构就是按照某种判断条件,从两 个或两个以上的程序段中选择一个执行。 分支结构具有两种形式:双分支结构和 多分支结构
N 判断条件? 判断条件? N 分支程序段1 分支程序段2 分支程序段
判 断 条 件 ? 分 支 程 序 段 Y E S NO 判 断 条 件 ? 分 支 程 序 段 1 分 支 程 序 段 2 NO Y E S
条件控制伪指令 条件控制伪指令的格式 IF条件表达式 分支体1 [ ELSEIF条件表达式 分支体2~N-1 LELSE 分支体N ENDIF
条件控制伪指令 n 条件控制伪指令的格式 .IF 条件表达式 .分支体1 [.ELSEIF条件表达式 .分支体2~N-1 .] [.ELSE . 分支体N .] .ENDIF
MODEL SMALL STACK DATA X DW-78 D7865 RESULT DW CODE STARTUP MOV AX, X SUb AX, Y JGE GREATERZERO;AX≥Y?,跳转 NEG AX ;求补,得到副值 GREATERZERO MOV RESULT,AⅩ EXIT O END
.MODEL SMALL .STACK .DATA X DW -78 Y DW 7865 RESULT DW ? .CODE .STARTUP MOV AX,X SUB AX,Y JGE GREATERZERO ;AX≥Y ? ,跳转 NEG AX ;求补,得到副值 GREATERZERO: MOV RESULT,AX .EXIT 0 END
MODEL SMALL STACK DATA A SBYTE 39 ;有符号方式定义 B SBYTE -43H C SBYTE 110 TAG DB CODE STARTUP MOV AL, B IMUL AL MOV BX,AX;Bx←B2 MOV AL, A IMUL C MOV CL, 2 SAL AX,cL;AX←4Ac IF SWORD PTR BX>=AX MOV TAG, 0 ELSEIF MOV TAG, 1 ENDIF EXIT O END
.MODEL SMALL .STACK .DATA _A SBYTE 39 ;有符号方式定义 _B SBYTE -43H _C SBYTE 110 TAG DB ? .CODE .STARTUP MOV AL,_B IMUL AL MOV BX,AX ;BX←B2 MOV AL,_A IMUL _C MOV CL,2 SAL AX,CL ;AX←4AC .IF SWORD PTR BX>=AX MOV TAG,0 .ELSEIF MOV TAG,1 .ENDIF .EXIT 0 END
双分支程序设计 ■通常双分支程序是根据条件是否成立, 从两个分支程序中选择其中一个分支程 序去执行。双分支程序设计可用一条条 件转移指令来实现,也可以用IF ELSEIF-. ENDIET条件控制伪指令来设计, 这是分支程序设计的最基本方法
双分支程序设计 n 通常双分支程序是根据条件是否成立, 从两个分支程序中选择其中一个分支程 序去执行。双分支程序设计可用一条条 件转移指令来实现,也可以用.IF- .ELSEIF-.ENDIFT条件控制伪指令来设计, 这是分支程序设计的最基本方法