04-2程序设计.ppt
文本预览下载声明
;主程序段 MAIN MOV AX, 3 CALL FACT XI: MOV BX, DX HLT ;阶乘子程序 ;入口参数:AL中存放n ;出口参数:DX中存放n! ;所用Reg:CX ? ? FACT PROC CMP AL, 0 JNE IIA MOV DL, 1 IIA: PUSH AX DEC AL CALL FACT ;递归调用 X2: POP CX CALL MULT ;嵌套 X3: MOV DX, AX RET FACT ENDP RET ; 无符号字节数乘法子程序 ; 入口参数:CL,DL中各为一乘数 ; 出口参数:AX中为乘积 MULT PROC MOV AL, CL MUL DL RET MULT ENDP 本程序调用过程示意图如下: MAIN … AL=3 CALL FACT X1: BX=DX=6 FACT … PUSH 3 AL=2 CALL FACT X2: CX=3 CALL MULT X3: DX=AX=6 MULT AX=3×2=6 FACT … PUSH 2 AL=1 CALL FACT X2: CX=2 CALL MULT X3: DX=AX=2 MULT AX=2×1=2 FACT … PUSH 1 AL=0 CALL FACT X2: CX=1 CALL MULT X3: DX=AX=1 MULT AX=1×1=1 FACT … DL=1 RET 汇编语言程序设计的全过程为: 编辑 ––– 汇编 ––– 连接 ––– 调试与运行。如下图: 三、汇编语言上机过程 编辑程序 源程序文件 宏汇编程序 MASM 目标程序文件 语法有错? 可执行文件 链接程序 LINK 调试程序 DEBUG 有错吗? 结束 Y Y N N .ASM .0BJ .LST .EXE .MAP 1. 编辑 ––– 建立源程序 A EDIT ×××. ASM ? A EDIT ABC. ASM ? 2. 汇编 ––– 生成目标程序 宏汇编程序MASM对源程序进行二遍扫描,完成: 检测是否有语法错误。 2) 实现宏功能。 3) 生成目标程序。 3. 链接 ––– 获得可执行文件 例:A) LINK ABC ? IBM personal computer Linker Version 2.00 (C) copyright IBM corp. 1981, 1982, 1983 Run file [ABC. EXE]: ? List file [NUL. MAP]: ABC? Libraries [.LIB] ? 4. 调试与运行 使用调试程序DEBUG 1. 进入与退出 例如要调试上例程序,有两种进入方法: 1) A DEBUG ? – N ABC.EXE ? – L? 2) A DEBUG ABC.EXE ? 如要退出DEBUG,则用退出命令Q,如: – Q ? A * 4.6 MSM宏汇编语言程序设计 程序的基本结构 汇编语言上机过程 汇编语言程序设计的过程通常都包括以下步骤: 1. 分析问题,确定算法 2. 编制程序流程 3. 正确、合理使用存贮器和寄存器 4. 编写程序 5. 调试运行程序 一、基本步骤 1. 顺序程序 2. 分支程序 3. 循环程序 4. 子程序 二、程序的基本结构形式 4.6.1 顺序程序 特点: 程序从运行开始到结尾一直是按顺序逐条执行指令,且每条指令只执行一次。 初始化部分 工作部分1 工作部分n 结束处理部分 … 顺序结构图 例1. 试编制一程序,计算下列公式的值,并存放在FUN存贮单元中。 其中x, y, z的值分别存放在VARX、VARY、VARZ 三个字存储单元中,且计算过程的中间值和最后结果仍在16位二进制的范围中。 DATA SEGMENT VARX DW 123H VARY DW 456H VARZ DW 789H FUN DW ?DATA ENDSSTACK1 SEGMENT PARA STACK DW 20H DUP (0)STACK1 ENDSCOXEG SEGMENT ASSUMZ CS: COSEG, DS: DATA, SS: STACK1 START: MOV AX,DATA MOV DS,AX MOV AX,VARX ADD AX,VARY ;A
显示全部