常用汇编语言8086程序集锦
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、计算X+Y=Z,将结果Z存入某存储单元。
(1). 实验程序如下:
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
XL DW ? ;请在此处给X低位赋值
XH DW ? ;请在此处给X高位赋值
YL DW ? ;请在此处给Y低位赋值
YH DW ? ;请在此处给Y高位赋值
ZL DW ?
ZH DW ?
DATA E NDS
CODE S EGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AX,XL ;X低位送AX
ADD AX,YL ;X低位加Y低位
MOV ZL,AX ;存低位和
MOV AX,XH ;X高位送AX
ADC AX,YH ;X高位加Y高位
MOV ZH,AX
A1: JMP A1
CODE E NDS
END START
二、计算X-Y=Z,其中X、Y、Z为BCD码。实验程序及流程如下:STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
X DW ? ;请在此处给X赋值
Y DW ? ;请在此处给Y赋值
Z DW ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AH,00H
SAHF
MOV CX,0002H
LEA SI, X
LEA DI, Z
A1: MOV AL,[SI]
SBB AL,[SI+02H]
DAS
PUSHF
AND AL,0FH
POPF
MOV [DI],AL
INC DI
INC SI
LOOP A1
A2: JMP A2
CODE ENDS
END START
三、乘法运算
本实验实现十进制数的乘法,被乘数、乘数和乘积均以BCD码形式存放在内存中,实验程序及流程如下:
STACK SEGMENT STACK
DW 64 DUP(?)
STACK ENDS
DATA SEGMENT
DATA1 DB 5 DUP(?)
DATA2 DB ?
RESULT DB 6 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV D S,AX
CALL INIT
MOV S I,OFFSET DATA2
MOV B L,[SI]
AND B L,0FH
CMP B L,09H
JNC E RROR
MOV S I,OFFSET DATA1
MOV D I,OFFSET RESULT
MOV C X,0005H
A1: MOV A L,[SI+04H]
AND A L,0FH
CMP A L,09H
JNC E RROR
DEC S I
MUL B L
AAM
ADD A L,[DI+05H]
AAA
MOV [DI+05H],AL
DEC D I
MOV [DI+05H],AH
LOOP A1
MOV C X,06H
MOV S I,OFFSET RESULT
DISPLAY:MOV AH,01H
MOV A L,[SI]
ADD A L,30H
MOV [SI],AL
INC SI
LOOP DISPLAY
A2: JMP A2
INIT: MOV SI,OFFSET RESULT
MOV C X,0003H
MOV A X,0000H
A3: MOV [SI],AX
INC SI
INC SI
LOOP A3
RET
ERROR: MOV A X,0145H
JMP A2
CODE ENDS
END START