微机原理及应用第五章程序设计.docx

上传人:b****5 文档编号:2916130 上传时间:2022-11-16 格式:DOCX 页数:24 大小:84.73KB
下载 相关 举报
微机原理及应用第五章程序设计.docx_第1页
第1页 / 共24页
微机原理及应用第五章程序设计.docx_第2页
第2页 / 共24页
微机原理及应用第五章程序设计.docx_第3页
第3页 / 共24页
微机原理及应用第五章程序设计.docx_第4页
第4页 / 共24页
微机原理及应用第五章程序设计.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

微机原理及应用第五章程序设计.docx

《微机原理及应用第五章程序设计.docx》由会员分享,可在线阅读,更多相关《微机原理及应用第五章程序设计.docx(24页珍藏版)》请在冰豆网上搜索。

微机原理及应用第五章程序设计.docx

微机原理及应用第五章程序设计

 

第五章程序设计的基本方法

§5.1基本源程序结构

一:

过程定义法(P137)

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA

STARTPROCFAR

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVES,AX;上述为固定写法

程序正文

RET;过程返回到DOS

STARTENDP;结束过程定义

CODEENDS;结束代码段

ENDSTART;结束汇编

二:

主程序定义法(P138)

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DAT

MAIN:

MOVAX,DATA

MOVDS,AX

MOVES,AX

程序正文

MOVAH,4CH

INT21H;21H号中断退出到DOS

CODEENDS;结束代码段

ENDMAIN;结束汇编

§5.2基本程序设计

一:

顺序程序设计

1:

特点:

IP值线性增加

0

1

8

27

64

125

216

6

216

2:

用查表法求Z=X的立方值TABLE0

A:

定义数据段1

DATASEGMENT2

TABLEDB0,1,8,27,64,125,2163

XVALDB64

YVALDB?

5

DATAENDS6

B:

定义堆栈段

一般不定义,由汇编程序自动生成

C:

定义代码段

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

STARTPROCFAR

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

LEABX,TABLE

MOVAL,XVAL

XLAT

MOVYVAL,AL

RET

STARTENDP

CODEENDS

ENDSTART

3:

已知一个长度为100个字节的数据块存放在2000H:

1000H开始的地址中,现要将该数据块移动到2000H:

1010H开始的地址中,用串传送指令编写完整的汇编语言源程序。

DATASEGMENTAT2000H

ORG1000H

AVR1DB100DUP(?

ORG1010H

AVR2DB100DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA,ES:

DATA

MAINPROCFAR

PUSHDS

MOVAX,0

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVES,AX

LEASI,AVR1

LEADI,AVR2

MOVCX,100

ADDSI,99

ADDDI,99

STD;DF=1

REPMOVSB

RET

MAINENDP

CODEENDS

ENDMAIN

二:

条件程序设计

1:

特点:

IP值受条件转移指令的影响而跳变

2:

实现表达式1(X>0)

Y=0(X=0)X在-128~+127之间

-1(X<0)

A:

波形图Y

1

-1X

B:

流程图

Y

NN

Y

C:

源程序

DATASEGMENT

XDB-3

YDB?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE;DS:

DATA

MAINPROCNEAR

PUSHDS

XORAX,AX

PUSHAX

MOVAX,DATA

MOVDS,AX

MOVAL,X

CMPAL,0

JGEBIGER

MOVAL,0FFH;-1的补码为FFH

MOVY,AL;Y=-1

JMPNEXT

BIGER:

JEEQUL;Y=1或Y=0

MOVAL,1

MOVY,AL;Y=1

JMPNEXT

EQUL:

MOVY,AL;Y=0

NEXT:

RET

MAINENDP

CODEENDS

ENDMAIN

三:

循环程序设计

1:

特点:

IP值受计数器CX中的值的变化而改变

2:

计算100

S=∑i

i=1

A:

流程图

 

N

Y

B:

源程序

DATASEGMENT

SUMDW?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE;DS:

DATA

MAIN:

MOVAX,DATA

MOVDS,AX

MOVAX,0

MOVCX,100

AGAIN:

ADDAX,CX

DECCX

JNZAGAIN

MOVSUM,AX

MOVAH,4CH

INT21H

CODEENDS

ENDMAIN

§5.5实用程序设计

一:

代码转换程序

数的各种进制表示之间的转换

例5.19输入十进制数,输出转换后的十六进制数表示

例5.20输入十六进制数,输出转换后的十进制数表示

《例5.19》十进制数到十六进制数的转换

1:

功能

A:

从键盘输入小于65535的十进制数

B:

显示输入数的十六进制表示

注:

输入12(回车),显示000C.输入45678(回车),显示B26E

2:

流程图(223页,图5.33)

A:

调用过程KEYDTOB

将输入的十进制数转换为二进制数

B:

调用过程CRLF

将当前光标移动到下列首行

C:

调用过程BTOHSCR

将二进制数转换为十六进制字符并显示

D:

调用过程CRLF

将当前光标移动到下列首行

E:

跳转为死循环,Ctrl_break退出

3:

特点

A:

单模块(文件)管理,多过程外理

B:

无数据段定义

C:

代码段由多个过程组成

1):

一个主过程MAIN

2):

三个子过程KEYDTOB,BTOHSCR,CRLF

4:

主过程MAIN

MAINPROCFAR

REPEAT:

CALLKEYDTOB

CALLCRLF

CALLBTOHSCR

CALLCRLF

JMPREPEAT

MAINENDP

5:

子过程KEYDTOB

✓入口参数:

输入0~9的ASCII码→AL

✓出口参数:

转换为二进制→BX

KEYDTOBPROCNEAR

MOVBX,0;出口参数寄存器BX清0

KEYIN:

MOVAH,01H

INT21H;键入字符ASCII码到AL

SUBAL,30H;30H~39H减30H后为0~9

CMPAL,0

JLEXIT;键入小于0的字符退出

CMPAL,9

JGEXIT;键入大于9的字符退出

MOVAH,0

XCHGAX,BX

MOVCX,10

MULCX

XCHGAX,BX

ADDBX,AX;完成(AX)=(AX)*10

JMPKEYIN

EXIT:

RET

KEYDTOBENDP

✓键入47(回车)后,BX中值的分析

A:

键入4,(AL)=4,(AX)=4,(BX)=0

XCHXAX,BX(AX)=0,(BX)=4

MULCX(AX)=0,(BX)=4

XCHXAX,BX(AX)=4,(BX)=0

ADDBX,AX(AX)=4,(BX)=4

B:

键入7,(AL)=7,(AX)=7,(BX)=4

XCHXAX,BX(AX)=4,(BX)=7

MULCX(AX)=40,(BX)=7

XCHXAX,BX(AX)=7,(BX)=40

ADDBX,AX(AX)=7,(BX)=47=00101111B=2FH

6:

子过程BTOHSCR

♦入口参数:

BX中的二进制数

♦出口参数:

十六进制数的ASCII码→DL

BTOHSCRPROCNEAR

MOVCH,4;BX中含4个十六进制数

ROTATE:

MOVCL,4;位移值放CL

ROLBX,CL;小循环4位,即BX中高4位移到低4位

P4

P3

P2

P1

;BX=

P3

P2

P1

P4

;BX=

P1

P4

MOVAL,BL;AL=

00H

P4

ANDAL,0FH;AL=

ADDAL,30H;十六进制数中,0~9的ASCII码为30H~39H

CMPAL,3AH

JLPRINT;于3AH,为数0~9

ADDAL,07H;大于39H,为数A~F,ASCII码值为41H~46H

PRINT:

MOVDL,AL

MOVAH,02H

INT21H;显示字符0~9及A~F

DECCH

JNZROTATE;循环显示4次

RET

BTOHSCRENDP

6:

子过程CRLF

✓无入口,出口参数,功能为回车换行

CRLFPROCNEAR

MOVDL,0DH;0DH为回车的ASCII码

MOVAH,02H

INT21H

MOVDL,0AH;0AH为换行的ASCII码

MOVAH,02H

INT21H

RET

CRLFENDP

 

7:

汇编源程序结构

DECTOHEXSEGMENT

ASSUMECS:

DECTOHEX

MAINPROCFAR

MAINENDP

KEYDTOBPROCNEAR

KEYDTOBENDP

BTOHSCRPROCNEAR

BTOHSCRENDP

CRLFPROCNEAR

CRLFENDP

DECTOHEXENDS

ENDMAIN

二:

数表的处理

数表中数的插入,删除,排序,检索等处理

《例5.24》气泡法排序程序

1:

功能

表中数据从乱序25,46,3,75,5,30到升序3,5,25,30,46,75

2:

方法

A:

全比较法

若表数据项为N

1):

第一次,经比较将最小数放入表顶

2):

第二次,经比较将次小数放入表次顶

.

3):

第N-1次,经比较将最大数放入表底

注:

N项数将进行N-1次排序操作

B:

标志位识别法

设排序标志F

1):

若标志F=-1,进行比较排序程序

2):

若标志F=0,数已排好,退出比较排序

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 调查报告

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1