上海电机学院
大作业报告
 
一、需求分析    3
简介    3
优点:    3
缺点:    3
特点:    4
功能:    4
二、 程序设计    4
2.1 要求内容    4
2.2程序分析    4
2.3流程图    5
2.4源程序    5
2.5测试分析    6
三、心得体会    8
一、需求分析
简介
    汇编语言(Assembly Language)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替机器指令操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。因此,有时候人们也把汇编语言称为组合语言。
    人类最容易接受自己每天都使用的自然语言。为了使机器指令的书写和理解变得容易,需要借鉴自然语言的优点,为此就引入了汇编语言。汇编语言使用符号来代表不同的机器指令,而这些符号非常接近于自然语言的要素。基本上,汇编语言里的每一条指令,都对应着处理器的一条机器指令
    汇编语言包括两个部分:语法部分和编译器。语法部分提供与机器指令相对应的助记符,方便指令的书写和阅读。当然,汇编语言的符号可以被人类接受,但不能被处理器识别,为此,还要由汇编语言编译器将这些助记符转换成机器指令。
优点:
    1、因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接简捷,并能像机器指令一样访问控制计算机的各种硬件设备,如磁盘存储器CPUI/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源。
2、目标代码简短,占用内存少,执行速度快,是高效的程序设计语言,经常与高级语言配合使用,以改善程序的执行速度和效率,弥补高级语言在硬件控制方面的不足,应用十分广泛。
缺点:
    1、汇编语言是面向机器的,处于整个计算机语言层次结构的底层,故被视为一种低级语言,通常是为特定的计算机或系列计算机专门设计的。不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性
    2、难于从汇编语言代码上理解程序设计意图可维护性差,即使是完成简单工作也需要大量的汇编语言代码,很容易产生bug,难于调试;
    3、使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构处理器进行优化,开发效率很低,周期长且单调
特点:
1.机器相关性。
这是一种面向机器的低级语言,通常是为特定的计算机或系列计算机专门设计的。因为是机器指令的符号化表示,故不同的机器就有不同的汇编语言。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
2.高速度和高效率。
汇编语言保持了机器语言的优点,具有直接和简捷的特点,可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、汇编语言大小写字母转换CPU、I/O端口等,且占用内存少,执行速度快,是高效的程序设计语言
3.编写和调试的复杂性。
由于是直接控制硬件,且简单的任务也需要很多汇编语言语句,因此在进行程序设计时必须面面俱到,需要考虑到一切可能的问题,合理调配和使用各种软、硬件资源。这样,就不可避免地加重了程序员的负担。与此相同,在程序调试时,一旦程序的运行出了问题,就很难发现。
功能:
    本次大作业是统计已知字符串中大小写字母的个数,利用-D命令在内存中进行查。
2、程序设计
2.1 要求内容
编写程序,统计一个字符串中的大小写字母的个数,分别存放到CAP和LOL单元。
2.2程序分析
本次大作业是对已知的字符串中的大写字母及小写字母的个数进行统计。
该程序用到了子程序的思想,将判断字符串中字符是否为大写或小写字母设计为子程序并进行调用。由于程序中涉及到了多个字符的比较,所以还要用到循环程序。
算法思想大致如下:
1. 字符串写入内存单元中,SI显示字符串偏移地址并设置初始值为-1或0(程序中设置为-1);
2. 设置变量名,用于计数,本题中大小写字母的计数变量分别为:CAP、LOL;
3. 判断字符是否为大小写可分别将字符同ASCII码大小写字母范围进行比较——大写介于‘A’(65H),’Z’(90H)和’a’(97H),’z’(122H),不符合要求即可进行下一个字符的比较。
2.3流程图
2.4源程序
DATA    SEGMENT
BUFF DB 'Yin Liang'
N      EQU $-BUFF
CAP DB 0
LOL DB 0
DATA    ENDS
CODE    SEGMENT'CODE'
    ASSUME    CS:CODE,DS:DATA
START:    MOV    AX,DATA
    MOV    DS,AX
    MOV    CX,N
    MOV    SI,-1
    MOV    AL,'A'
    MOV    BL,'Z'
    MOV    AH,'a'
    MOV    BH,'z'
AGAIN:    INC    SI
        CMP    AL,BUFF[SI]
        JA    NEXT1
        CMP    BL,BUFF[SI]
        JB    NEXT1
        INC    CAP
NEXT1:    CMP    AH,BUFF[SI]            NEXT2: LOOP  AGAIN
        JA      NEXT2                          MOV    DL,CAP
        CMP    BH,BUFF[SI]                    ADD  DL,30H
        JB      NEXT2                          MOV    AH,02H
        INC    LOL 
EXIT:    MOV    AX,4C00H
    INT    21H
CODE    ENDS
    END    START
三、心得体会
本次实验是80x86汇编语言程序设计这门课的最后考核,老师通过实例让我们更清楚地理解汇编语言的应用与实践。因为之前老师带我们复习过相关课题的实验,所以本次课程设
计并不是非常难,还是可以着手慢慢做、慢慢理会的。本次程序用到了子程序的知识,和之前学过的高级C语言中的原理是一样的,这次的实践汇编语言编程加深了我对汇编语言的理解和运用,一些以前不太懂及其用法都基本掌握了,对程序有了结构化设计思想。
    通过学习汇编语言,能够加深我对计算机原理和操作系统等课程的理解。通过学习和使用汇编语言,能够是我们感知、体会和理解机器的逻辑功能,向上为理解各种软件系统的原理,打下技术理论基础;向下为掌握硬件系统的原理,打下实践应用基础。
通过本学期对汇编语言设计的学习,大致了解了汇编语言的基本概念,特点以及优缺点;对80x86的系统结构、寄存器和存储器的组织方式和80x86CPU的工作模式也掌握一些。对指令系统中的数据传送指令、算术运算指令、逻辑运算指令的相关知识掌握得还不是很透彻。有关汇编语言的寻址方式也不是很清晰。用过指令系统的介绍,我们学会了完成某种简单功能的程序模块设计。在汇编语言设计结构这一章,我初步掌握了汇编语言程序中常用到的运算符和表达式、伪指令、操作符的使用方法。
本学期的课程已经结束,虽然在汇编语言上的学习不是很好,理解不是很到位,但很感谢老师对我们的悉心指导,使得我们也学到了些技巧。

参考文献
[1] 马力妮.汇编语言程序设计.北京:机械工业出版社,2009
[2] 杨季文 80x86汇编语言程序设计教程.北京:清华大学出版社, 2004
[3] 李珍香等.汇编语言课程设计案例精编.北京:中国水利水电出版社,2005
[4] 洪志全 罗省贤 .汇编语言程序设计教程.北京:电子工业出版社,2004

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。