程序设计课件.pptVIP

  • 0
  • 0
  • 约1.97千字
  • 约 43页
  • 2026-01-24 发布于河南
  • 举报

第6节汇编语言程序设计基本技术;例:试编制程序,计算下列公式的值,并将结果存放 在FUN存储单元中。

F?

其中X,Y,Z的值分别存放在VARX、VARY、VARZ三个字存储单元中,且计算过程的中间值和最后结果仍在16位二进制数的范围内。编制源程序如下:;CODE SEGMENT ;设置代码段

ASSUMECS:CODE,DS:DATA,SS:STACK1

START: MOV AX,DATA ;置段基值于DS

MOV DS,AX

MOV AX,VARX ;取变量X

ADD AX,VARY ;AX?(X+Y)

MOV BX,AX ;BX?(X+Y)

SAL AX,1 ;AX?2*(X+Y)

SAL AX,1 ;AX?4*(X+Y)

ADD AX,BX ;AX?5*(X+Y)

SAL AX,1 ;AX?10*(X+Y)

MOV BX,VARZ ;取变量Z

DEC BX ;BX?(Z?1)

MOV CX,BX ;CX?(Z?1)

SAL BX,1 ;BX?2*(Z?1)

ADD BX,CX ;BX?3*(Z?1)

SUB AX,BX ;AX?10*(X+Y)?3*(Z?1)

SAR AX,1 ;AX?{10*(X+Y)?3*(Z?1)}/2

MOV FUN,AX ;存放计算结果

MOV AH,4CH ;终止用户程序,返回DOS

INT 21H

CODE ENDS

ENDSTART;例:用查表方法将一位十六进制数(0~9,A~F) 转换成它对应的ASCII码。;.STACK100H ;设置堆栈段

.CODE ;设置代码段

START:MOV AX,@DATA MOV DS,AX

LEA BX,TABLE;取表首址

XOR AH,AH;AH清零

MOV AL,HEX;取一位十六进制数

ADD BX,AX ;确定查表位置

MOV AL,[BX];查表

MOV ASCI,AL;存结果

MOV AH,4CH ;终止程序,返回DOS

INT 21H

END START;5.6.3分支程序设计;a.单条件转移指令;b.无符号数条件转移指令;2、分支程序设计;例:编程序段,把DA1字节数据变为偶数。;??如两个数均是偶数,两个数加1后分别送入

DA1、DA2字节单元中;;根据分析,画出流程图如下:;(2)用跳转表形成多路分支结构;数据段如下:;例:由转移指令构成跳转表的多路分支程序设计。;5.6.4循环程序设计;产生数列的程序段如下:;(2)LOOPE/LOOPZ指令; MOVCX,COUNT

MOVBX,-1

NEXT:INCBX

CMPSTRING[BX],20H

LOOPENEXT

JNEOK

MOVBL,0FEH;未找到

OK:INCBX

MOVINDEX,BL;存结果;(3)LOOPNE/LOOPNZ指??;

MOVCX,NUM

XORBX,BX

MOVDL,0FH

NO_ZERO:MOVAL,ARRAY[BX]

XORAH,AH

DIVDL;除0FH

MOVYUSHU[BX],AH

INCBX

CMPAH,0;余数为0吗?

LOOPNENO_ZERO

JNEEND0;有余数为0?

DECBL;有余数为0

END0:MOVLEN,BL;2、循环程序结构;3、循环控制方法;(2)条件控制循环;5.6.5子程序设计;(2)段间调用与段间返回;(3)信息的保存;主程序段:;(2)使用存储单元传递参量;(3)使用地址表传递参量;主程序段:;(4)使用堆栈传递参量;5.6.6系统功能子程序调用;5.6.7汇编语言程序的开发;2、汇编——生成目标程序;3、连接——生成可执行程序;D:DEBUGTEST.EXE?;R命令——显示寄存器内容;(3)修改命令;A命令——汇编命令

文档评论(0)

1亿VIP精品文档

相关文档