汇编语言教程

汇编语言教程,第1张

汇编语言程序设计步骤:

1、分析问题,抽象出描述问题的数据模型

2、确定问题的算法思想

3、画出流程图或结构图

4、分配存储器和工作单元(寄存器)

5、逐条编写程序

6、静态检查,上机调试 例:编程查找考生的最高分,假设所有考生分数已存入计算机内存。

7、分析问题 根据条件、特点、规律 →数学模型 本例分数已给定为0~200之间的整数集合(考虑加试分) ,记为{S},找max{S}(注: 简单问题不一定写数学模型) 。

PRINT MACRO PARAM

LEA DX,PARAM

MOV AH,9

INT 21H

ENDM

DSEG SEGMENT

MARKS DB100,87,45,67,32,45,66,98,83,90,85,60,59 成绩

MARKED DB0FFH表示成绩数据结束

M59MSG DB' <60 counter:$'

M59 DB5 DUP(0),0DH,0AH,24H

C59 DW0

M60MSG DB' <90 counter:$'

M60 DB5 DUP(0),0DH,0AH,24H

C60 DW0

M90MSG DB'>=90 counter:$'

M90 DB5 DUP(0),0DH,0AH,24H

C90 DW0

BUFFER DB20,20 DUP(0)

CRLF DB0DH,0AH,24H

MSGERR DB'data error',07,0DH,0AH,24H

DSEG ENDS

CSEG SEGMENT

ASSUMECS:CSEG,DS:DSEG

START: MOV AX,DSEG

MOV DS,AX

LEA SI,MARKS

ML1: MOV AL, [SI]取一个成绩

INC SI

CMP AL,0FFH 是不是已经处理完所有成绩

JZML2

CMP AL,101 判断一下是不是有大于100的数,这里假设最大成绩是100分

JNC ML_ERR

CMP AL,60 下面进行各成绩段的计数

JCML_L60

CMP AL,90

JCML_L90

INC [C90]

JMP ML1

ML_L60: INC [C59]

JMP ML1

ML_L90: INC [C60]

JMP ML1

ML2: MOV AX,[C59]

LEA SI,M59+5

CALL AX2ASC 将AX中的数转换成ASCII码,以显示

MOV AX,[C60]

LEA SI,M60+5

CALL AX2ASC

MOV AX,[C90]

LEA SI,M90+5

CALL AX2ASC

PRINT M90MSG 显示,如果不希望用宏指令,可以用下列的方式实现

LEA DX,M90MSG

MOV AH,9

INT 21H

PRINT M90

PRINT M60MSG

PRINT M60

PRINT M59MSG

PRINT M59

MOV AX,4C00H返回DOS

INT 21H

ML_ERR: PRINT MSGERR 显示错误信息

MOV AX,4C01H

INT 21H

下面的子程序用于将AX中的数转换成ASCII码

AX2ASC PROC NEAR

ent ax=data si=end of buffer exit si=start of string

PUSH AX

PUSH CX

PUSH DX

MOV CX,10

SUB_L1: MOV DX,0

DIV CX

ADD DL,30H

DEC SI

MOV [SI],DL

ORAX,AX

JNZ SUB_L1

POP DX

POP CX

POP AX

RET

AX2ASC ENDP

CSEG ENDS

END START

以上程序已测试通过。不知道是否满足你的要求

希望能帮到你。

首先你要有个总体的逻辑框架,然后写出你大致的程序框图,在在每一个环节上进行思考理解,理清头绪,把整个框图都完全理解明白以后,就开始进行写程序了,注意一些语句的用法哦,写完之后烧到开发板上,然后对程序进行调试,有错误就仔细的修改,调试应该说是最麻烦的工作,所以不要着急,慢慢来,等到你成功的时候你就有种说不出来的高兴了,祝你好运。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11061531.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-13
下一篇2023-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存