常用汇编语言8086程序集锦

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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

相关文档
最新文档