汇编语言程序设计上机实验

汇编语言程序设计上机实验,第1张

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

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

希望能帮到你。

你的程序不完整,以下为完整程序:

datarea segment

DATA1   dw 5           

DATA2   dw 4

DATA3   dw ?

DATA4   dw ?

datarea ends

prognam segment

main    proc far

        assume cs:prognam,ds:datarea

start:  mov ax,seg datarea

        mov ds,ax

        mov es,ax

        mov ax,data1

        mov bx,data2

        add ax,bx           

        mov DATA3,ax

        mov ax,DATA1

        sub ax,bx           

        mov DATA4,ax

        mov ah,4ch

        int 21h

        ret 

main    endp

prognam ends

        end start

汇编语言程序设计的基本步骤了解了汇编语言指令的功能和用法,了解了汇编语言程序的编写格式,就可以编制完整的汇编语言程序了。一个程序通常具有顺序、分支、循环和子程序4种结构形式。顺序程序结构就是指完全按顺序逐条执行的指令序列。在程序设计过程中,顺序结构大量存在,屡见不鲜。但一个完整的程序只是逐条去执行指令,这非常少见。常见的程序结构,是上述4种结构的混合体。一般来说,编制一个汇编语言程序的步骤如下:(1) 分析题意,确定算法或算法思想。算法是指解决问题的方法和步骤。比如现有的一些计算方法和日常生活中解决问题的逻辑思维推理方法等。(2) 根据算法画出流程图,简单的情况也可不画。画出描述算法的流程图,可以首先从图上检验算法的正确性,减少出错的可能,使得动手编写程序时的思路更加清晰。(3) 分配存储空间和工作单元,合理地使用寄存器。分配存储空间和工作单元,是指存储空间的分段和数据定义。另外,由于寄存器的数量有限,编写程序时经常会感到寄存器不够用。因此,对于字节数据,要尽量使用8位寄存器。而采用适当的寻址方式,也会达到节省寄存器的目的。(4) 根据流程图编写程序。这是编制汇编语言程序最为重要的一步。算法里规定的功能,是要通过一条条指令描述出来的。为了提高编程能力,对于初学者,一是要多阅读现有的程序,以学习别人的编程经验;而更为重要的是,必须多亲自动手编写,不要怕失败,只有通过无数次失败,才能从中积累自己的编程经验。(5) 上机调试运行程序。通过汇编的源程序,只能说明它里面不存在语法错误。但是它是否能达到算法所要求的预期效果,还必须经过上机调试,用一些实验数据来测试,才能够真正地得出结论。可以这么说,即使是一个非常有经验的程序员,也没有百分之百的把握说他编写的程序一次就成功。 用流程图表示算法 流程图用一些图形框来代表各种 *** 作。用图形表示算法,直观形象,可以用来帮助人们对算法的理解。下图给出了一些常用的流程图符号。

上图中的判断框(菱形)用来对一个给定的条件作出判断,以决定如何执行其后的 *** 作。它有一个入口,两个出口,如下图(a)所示。

连接点(圆圈)是用来将画在不同地方的流程线连接起来。例如在下图(b)里,有两个圈里写着数字1的圆圈,它表示是从左边的1出来,进到右边图的1里(这由流程线的方向给出)。可以看出,这两个点其实就是同一个点,只是由于画不下而分开来画的。用连接点,可以避免流程图中的流程线相互交叉或过长,从而使流程图清晰。

注释框不是流程图中必需的部分。在流程图中使用它,是为了对流程图中的某些框的 *** 作做一些必要的说明,以便使人们能够更好地通过流程图来理解算法。

处理框反映做些什么样的 *** 作,如把某个单元的内容送入某个寄存器,从某个存储单元取出数据等。它是流程图里最为本质的、出现最多的图形框。

输入/输出框反映程序的输入和输出情况。计算机程序无外乎接收数据,进行处理,然后加以输出,所以输入/输出框是必不可少的。


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

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

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

发表评论

登录后才能评论

评论列表(0条)

    保存