汇编语言例题_第1页
汇编语言例题_第2页
汇编语言例题_第3页
汇编语言例题_第4页
汇编语言例题_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

4.3

8086/8088汇编语言程序设计基本方法程序设计步骤:1.

分析问题,抽象出数学模型;2.

确定实现数学模型的算式;3.

绘制描述程序的流程图(包括确定内存单元和分配

寄存器);4.

编写源程序;5.

上机运行调试。顺序程序结构

一般语句条件程序结构

Y

N

If

else

语句分支程序结构

..

Switch

语句4.3

8086/8088汇编语言程序设计基本方法程序的基本结构循环控制结构

N

Y

while

语句循环控制结构

N

Y

do

--while

语句4.3

8086/8088汇编语言程序设计基本方法程序的基本结构•••顺序程序设计

指令指针

IP

值线性增加,IP

=

IP

+

1条件程序设计

IP

值受标志位的影响而跳变

影响标志的指令

CMP、TEST、JXX循环程序设计

IP

值受计数器

CX

中的值不为零而循环

影响标志的指令

DEC4.3

8086/8088汇编语言程序设计基本方法基本程序设计堆栈段数据段代码段DEBUG直接编程初始化输

入运算处理转

换输

出返回DOS数值运算非数值运算4.3

8086/8088汇编语言程序设计基本方法程序的层次模块结构

源程序4.3

8086/8088汇编语言程序设计基本方法例

:程序输出显示:“

Welcome

!”,流程描述如下。定义堆栈段

定义数据段源程序模块结束指示段寄存器

初始化

显示输出字符串定义代码段自动返回

DOSSTACKSSEGMENT

STACK

DWSTACKS128

DUP(?)ENDSDATAS

SEGMENTSTRING

DB‘Welcome!’,13h,10h,’$’DATAS

ENDSCODES

SEGMENT

ASSUME

CS:CODE,DS:DATASSTART:

MOV

AX,

DATAS

MOV

DS,

AXLEA

DX,

STRINGMOV

AH,

09HINT

21HMOV

AX,

4C00HINT

21HCODES

ENDS

ENDSTART4.3

8086/8088汇编语言程序设计基本方法堆栈数据代码源程序模块结束例1:编程计算W=X+Y+24-Z。其中变量X、Y、Z均为32位数。4.3.1

顺序结构程序DATA

SEGMENT

X

DW

19,

86

Y

DW

3,

25

Z

DW

1987,

325

W

DW

2DUP(?)DATA

ENDSCODE

SEGMENT

ASSUME

CS:CODE,

DS:DATASTART:MOV

AX,

DATAMOV

DS,

AX

MOV

AX,

X

MOV

DX,

X+2ADD

AX,

YADC

DX,

Y+2ADD

AX,

24ADC

DX,

0SUB

AX,

ZSBB

DX,

Z+2MOV

W,

AXMOV

W+2,

DX

MOV

AH,

4CH

INT

21HCODE

ENDS

END

START例2:用变量D1及D2表示的两个8字节无符号数相加。4.3.1

顺序结构程序两数之和按从高到低依次放在SI,BX,CX,DX中。

DATA

SEGMENT

D1

DB

12H,34H,56H,78H,9AH,0ABH,0BCH,0CDH

D2

DB

0CDH,0BCH,0ABH,9AH,78H,56H,34H,12H

DATA

ENDS

CODE

SEGMENT

ASSUME

CS:CODE,

DS:DATABG:MOV

AX,DATA;给DS赋段值MOV

DS,AX4.3.1

顺序结构程序

;将D1表示的偏移地址送DI;取操作数到寄存器中

;将D2表示的偏移地址送DI

LEA

DI,D1

MOV

DX,[DI]

MOV

CX,[DI+2]

MOV

BX,[DI+4]

MOV

SI,[DI+6]

LEA

DI,D2

ADD

DX,[DI]

ADC

CX,[DI+2]

ADC

BX,[DI+4]

ADC

SI,[DI+6]

MOV

AH,4CH

INT

21HCODE

ENDS

END

BGY

=

0例3:符号函数4.3.2

分支结构程序⎩⎧

1⎪⎪−1X

>

0

X

=

0

X

<

0设X为8位有符号数。

4.3.2

分支结构程序DATA

SEGMENT

X

DB

-18

Y

DB

?DATA

ENDSCODE

SEGMENTASSUME

CS:CODE,DS:DATASTART:

MOV

AX,

DATAMOV

DS,

AXMOV

AL,

XCMP

AL,

0JGE

BIGRMOV

AL,

-1JMP

STOPBIGR:JE

STOPSTOP:MOV

AL,

1MOV

Y,

ALCODE

MOV

AH,

4CH

INT

21H

ENDSEND

START例4:比较变量D1和D2表示的两个有符号字数大小,将其中较大数据放在BX寄存器中。4.3.2

分支结构程序开始D1

BX结束BX≥D2?

Y

ND2

BXBEGIN:MOV

AX,

DATAMOV

DS,

AXMOV

BX,

D1CMP

BX,

D2JGE

NEXTMOV

BX,

D2;给DS赋段值

;若D1≥D2,则不交换,转NEXT

;若D1<D2,则交换NEXT:MOV

AH,

4CH

INT

21HCODE

ENDSEND

BEGIN4.3.2

分支结构程序DATASEGMENT;补码为FF85H;补码为FF88H

D1

D2DATA

DW

-123H

DW

-120HENDSCODE

SEGMENT

ASSUME

CS:CODE,DS:DATA例5:已知X、Y、Z为三个无符号16位二进制数,求三者中最大值,

送MAX单元。4.3.2

分支结构程序4.3.2

分支结构程序DATA

SEGMENTX

DW

180Y

DW

850Z

DW

350MAX

DW

?DATA

ENDSCODE

SEGMENTASSUME

CS:CODE,DS:DATASTART:MOV

AX,

DATAMOV

DS,

AXMOV

AX,

XCMP

AX,

YJAE

XGYMOV

AX,

YXGY:CMP

AX,

ZJAE

GMAXMOV

AX,

ZGMAX:MOV

MAX,

AX

MOV

AH,

4CH

INT

21HCODE

ENDS

END

START4.3.2

分支结构程序例6:已知X、Y、Z为三个带符号8位二进制数,

求三者中中间值,送ARV单元。

开始

X

ALX≤Y?Y

ALAL

RV

结束YNX≤Z?NX≥Z?Y

ALNALYYY≥Z?

YY≥Z?

Y

NALN4.3.2

分支结构程序DATA

SEGMENTX

DB

-5

Y

DB

4

Z

DB

6

ARV

DB

?DATA

ENDSCODE

SEGMENTASSUME

CS:CODE,

DS:DATASTART:MOV

AX,

DATAMOV

DS,

AXMOV

AL,

XCMP

AL,

YJL

XLYCMP

AL,

ZJLE

MARVMOV

AL,

YCMP

AL,

ZXLY:JGE

MARVMOV

AL,

ZJMP

MARV

CMP

AL,

ZJGE

MARVMOV

AL,

YCMP

AL,

ZJLE

MARVMOV

AL,

ZMARV:MOV

ARV,

AL

MOV

AH,

4CH

INT

21HCODE

ENDSEND

START4.3.3

循环结构程序例7:统计一个数据块中负数的个数,个数送

RS中。

开始

D1的EA

BX

0

DX

COUNT

CX结束YCX-1=0?

YDX

RSNBX≥0?

NDX加BX加4.3.3

循环结构程序DATA

SEGMENTD1

DB

-1,-3,

5,

6,

9,

-5COUNT

EQU

$-D1

RS

DW

?DATA

ENDSCODE

SEGMENTASSUME

CS:CODE,

DS:DATASTART:

MOV

AX,

DATAMOV

DS,

AXBEGIN:MOV

AX,

DATAMOV

DS,

AXMOV

BX,

OFFSET

D1LOP1:MOV

CX,

COUNTMOV

DX,

0

MOV

AL,

[BX]CMP

AL,

0JGE

JUSINC

DXJUS:

INC

BXDEC

CXJNZ

LOP1MOV

RS,

DXMOV

AH,

4CHINT

21HCODEENDSEND

BEGIN例8:找出从无符号字节数据存储变量VAR开始存放的N个数中的最大数放在BH中。4.3.3

循环结构程序4.3.3

循环结构程序DSEGSEGMENTVARNDB

5,7,19H,23H,0A0HEQU

$-VARDSEGENDSCSEGSEGMENTASSUME

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论