8086汇编语言程序设计基本方法.ppt
文本预览下载声明
5.6 汇编语言程序设计的基本方法;5.6.1 顺序程序设计;[例1]求两个数的平均值。这两个数分别存放在X单元和Y单元中,而平均值放在Z单元中。源程序编制如下:
DATA SEGMENT
X DB 8CH
Y DB 64H ;赋予初值
Z DB ? ;分配存储空间
DATA ENDS
STACK SEGMENT
DW 20H DUP(0) ;给堆栈段分配一个
TOP LABLE WORD ;据区共32个字,每个
STACK ENDS ;字的内容均为0
;CODE SEGMENT
MAIN PROC FAR ;定义子程序名为MAIN,类型FAR
ASSUME CS:CODE ;把段寄存器和 ASSUME DS:DATA ;段名对应起来
ASSUME SS:STACK
START: PUSH DS
MOV AX, 0
PUSH AX
MOV AX, DATA ;给数据段赋初值
MOV DS, AX
MOV AX, STACK
MOV SS, AX
MOV SP, OFFSET TOP; MOV AL, X
ADD AL, Y ;两数低字节相加结果送AL
MOV AH, 0
ADC AH, 0 ;两数高字节带进位相加
SHR AX, 1
MOV Z, AL
RET
MAIN ENDP
CODE ENDS
END START;例2 编写程序,计算(W-(X*Y+Z-100))/W,其中W、X、Y、Z均为16位带符号数,计算结果的商存入AX,余数存入DX。
例3 把非压缩十进制数DAT1转换为压缩十进制数;例2编写程序,计算(W-(X*Y+Z-100))/W,其中W、X、Y、Z均为16位带符号数,计算结果的商存入AX,余数存入DX。
DATA SEGMENT
W DW 268
X DW –73
Y DW 48
Z DW –85
DATA ENDS
STACK SEGMENT
DW 100 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
MOV DS,AX
MOV AX,X ;计算X*Y
IMUL Y
MOV CX,AX ;用CX存储结果低位
MOV BX,DX ;用BX存储结果高位
MOV AX,Z ;计算X*Y+Z;例3 把非压缩十进制数DAT1转换为压缩十进制数。
·STACK 64H
·DATA
DAT1 DW 0908H ;非压缩十进制数0908H
·CODE
BEGIN: MOV AX,@DATA
MOV DS,AX
MOV AX,DAT1 ;AX←0908H
MOV CL,4 ;CL ←4
SAL AH,CL ;09字节左移4位,AH=90H
ROL AX,CL
;9008H字循环左移4位,AX=0089H
ROL AL,CL ;89字节循环左移4位,AL=98H
MOV BYTE PTR DAT1,AL
显示全部