汇编语言子程序设计实验
湘潭大学
实 验 报 告
课 程:
实验题目:
学 院:
专 业:
学 号:姓 名:
指导教师:
完成日期: 80X86汇编语言程序设计 汇编语言子程序设计 信息工程学院 14级计算机科学与技术二班 2014551418 周 宇 匡林爱 2016.5.4
一、实验内容
编程实现一个任务,任务可分为多个子程序来实现。
二、实验环境
硬件环境:一台微型计算机
软件环境:Window7系统、debug 环境、masm
三、实验代码设计
DATAS SEGMENT
; 此处输入数据段代码
DATAS ENDS
STACKS SEGMENT
; 此处输入堆栈段代码
STACKS ENDS
DSEG SEGMENT
STRING DB 'AB=C1234hello5world',0; 假设的字符串
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG
ISDECM PROC ; 子程序,判断一个字符是否为数字符
CMP AL,'0'
JB ISDECM1
CMP AL,'9' +1
CMC ; 把CF 标识取反
ISDECM1: RET
ISDECM ENDP
;CODES SEGMENT
; ASSUME CS:CODES,DS:DATAS,SS:STACKS
START :
;MOV AX,DATAS
;MOV DS,AX
; 此处输入代码段代码
MOV AX,DSEG
MOV DS,AX
MOV SI,OFFSET STRING ; 置取指针
MOV DI,SI ; 置存指针
NEXT:
MOV AL,[SI]
INC SI
OR AL,AL ; 是否到字符串尾
JZ OK ; 是,转
CALL ISDECM ; 否,判断是否为数字符
JNC NEXT ; 是,不保存而处理下一个字符
MOV [DI],AL ; 否,保存
INC DI
JMP NEXT ; 处理下一个字符
OK:
MOV [DI],AL
MOV AH,4CH
INT 21H
CSEG ENDS
END START
该程序用来把一个字符串中的数字符去掉,其中用到了子程序ISDECM ,子程序ISDECM 用来判别一个字符是否为数字符。
四、实验结果与截图
实验结果截图如下
开始字符串为“AB=C1234hello5world”
可知最后的结果为“AB=Chelloworld”
五、心得体会
通过这个实验,学会了汇编中子程序的设计,掌握了其中的入口参数和出口参数的传送,对汇编程序的结构更加了解,在其中用到了字符串的处理,也学到了一些对字符串处理的方法和技巧,代码的完成不是一气呵成的,其中有很多逻辑错误和没有考虑到的地方,花了写时间来找其中的bug ,和高级语言相比,找bug 会稍微更加麻烦,而且编写代码时需要考虑很多细节,如地址指针加一,寄存器的值要保证不会被随意的修改,这是在高级语言所没有的,编写程序的思路更加严谨。