编语言程序设计.pptVIP

  • 35
  • 0
  • 约1.99万字
  • 约 116页
  • 2017-12-01 发布于湖北
  • 举报
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1、流程图 起止框:表示程序的开始和结束 工作框:说明该步骤的功能 判断框:说明判断的条件 调用框:说明调用过程的名字、参数等 连线: 表示程序的走向 2、程序的基本结构形式 顺序结构 按直线顺序执行程序 分支结构 含判断语句,根据判断结果选择分支 例: CMP AL,BL JZ L1 ;相等 L2: …… ;不等 JMP NEXT L1: …… NEXT:…… (3)循环结构 初始化部分 循环体部分 循环条件判断部分 例: MOV CX,100 ;初始化部分 L: …… ;循环体开始 …… DEC CX ;修改循环变量 JNZ L ;循环条件判断 (4)子程序结构 在程序中需要多次出现的程序段,可定义为一个子程序,在主程序需要的时候就可以直接调用它 寄存器的保护与恢复 主程序与子程序之间的参数传递 子程序可嵌套调用 (1)顺序结构--32位无符号数相乘 思路:分为高字部分和低字部分,模拟笔算的方法,做4次16位的乘法运 算,得到4个部分和A、B、C、D,再加起来得到结果 计算部分和A= 计算部分和B= A的低字部分 RES A的高字部分 RES+2 B的低字部分叠加至RES+2 B的高字部分叠加至RES+4 计算部分和C= 计算部分和D= C的低字部分叠加至RES+2 C的高字部分叠加至RES+4 D的低字部分叠加至RES+4 D的高字部分叠加至RES+6 结束 开始 DATA SEGMENT MUL1 DW 5678H, 1234H ;被乘 MUL2 DW 789AH, 3456H ;乘数3456789AH RES DW 4 DUP(0) ;存放64位结果,初始化为0 DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA MAIN PROC FAR PUSH DS MOV AX, 0 PUSH AX MOV AX, DATA MOV DS, AX ;计算部分和A=L2×L1 MOV AX, MUL2 ;AX←L2 MUL MUL1 ;(DXAX)←L2×L1 MOV RES, AX ;保存A的低字部分 MOV RES+2, DX ;保存A的高字部分 ;计算部分和B=L2×H1 MOV AX, MUL2 ;AX←L2 MUL MUL1+2 ;(DXAX)←L2×H1 ADD RES+2, AX ;叠加B的低字部分 ADC RES+4, DX ;叠加B的高字部分 ;计算部分和C=H2×L1 MOV AX, MUL2+2 ;AX←H2 MUL MUL1 ;(DXAX)←H2×L1 ADD RES+2, AX ;叠加C的低字部分 ADC RES+4, DX ;叠加C的高字部分 ;计算部分和D=H2×H1 MOV AX, MUL2+2 ;AX←H2 MUL MUL1+2 ;(DXAX)←H2×H1 ADD RES+4, AX ;叠加D的低字部分 ADC RES+6, DX ;叠加D的高字部分 RET MAIN ENDP CODE ENDS END MAIN 相乘结果: 03B8C7B8E8544430H (2)分支结构—符号函数的实现 DATA SEGMENT X DB 12H,34H,00H,0FFH,0ABH ;X的值 COUNT EQU $-X ;X的个数 SGNX DB COUNT DUP(?) ;保存结果 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA MAIN PROC FAR PUSH DS MOV AX,0 PUSH AX MOV AX,DATA MOV DS,AX MOV ES,AX LEA SI,X ;初始化源指针 LEA DI,SGNX

文档评论(0)

1亿VIP精品文档

相关文档