沈 阳 工 程 学 院
学 生 实 验 报 告
实验室名称:微机原理实验室 实验课程名称:
实验项目名称:子程序设计及DOS调用实验 实验日期: 20 年 月 日
班级: 姓名: 学号:
指导教师: 王德君、李贞 批阅教师: 成绩:
一.实验目的
1.学习子程序的定义和调用方法。
2.学习DOS功能调用的使用方法。
二.实验设备
PC机一台,TD-PITE微机原理实验教学系统一台。
三.实验内容
程序1:主程序从键盘读入一个小写字母,子程序将其转换成大写字母,并输出。请将程序代码补充完整。
DSEG SEGMENT
CHAR DB ?
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DSEG
START:MOV AX,DSEG
MOV DS,AX
( MOV AL,CHAR )
INT 21H
( CALL CAPITAL )
MOV AH,4CH
INT 21H
CAPITAL PROC
SUB AL,( 20H ) ;转换为大写字母
MOV DL,AL ;输出大写字母
MOV AH,2
INT 21H
( RET )
CAPITAL ENDS
CODE ENDS
END START
程序2:定义一个以“$”结尾的字符串,长度不超过99,子程序求该字符串长度(不包括“$”),主程序显示结果。请将程序代码补充完整。
DATA SEGMENT
MESSAGE DB 'This is a string','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
GETLENGTH PROC ;定义子程序
XOR AX, AX
NEXT: CMP [BX], ( 0 )
JZ DONE
( INC AX ) ;串长度加1
INC BX
JMP NEXT
DONE:RET
GETLENGTH ENDP
START:MOV AX, DATA
MOV DS, AX
LEA BX, MESSAGE
CALL GETLENGTH
MOV BL, 10
;通过AX除以10分别得到十位和个位数字 (接下页)
DIV BL
ADD AX, 3030H ;商和余.数(十位数字和个位数字)转换为ASCII码
MOV BX, AX ;☆
MOV DL, BL
( MOV AH,02H )
INT 21H ;输出十位数字
( MOV DH,BH ) ; (接右侧)
MOV AH, 02H
INT 21H ;输出个位数字
MOV AH, 4CH
INT 21H
CODE ENDS
END START
四.实验步骤
1.运行Wmd86调试软件,编写程序1,经编译、( 链接 )无误后,进入调试状态。
2.先点击
按钮单步运行程序1,运行结束后重新设置起点,点击
按钮再次单步运行程序1,观察两次运行程序的过程有何不同。
3.程序1运行后,输入的小写字母与转换后输出的大写字母的位置关系:( A )。
A 显示在同一行上 B 大写字母显示在下一行 C 大写字母会覆盖小写字母
4.编写程序2,经编译、链接无误后,采用连续运行方式执行程序,执行结果显示( 输入的小写字母在所对应的大写字母 )。若结果不正确则采用单步运行方式,观察程序执行过程,找出故障原因,并修改程序。
5.将程序2中的字符串改为'My string','$',程序执行后显示( A )。
A 09 B 9 C 08 D 8
五.实验结果及分析
1.点击
按钮单步运行程序与点击
按钮单步运行程序的过程有何不同。
2.程序1中带☆的语句为什么要将AX中的数据存入BX?
为了和下面机械代码“mov ah,02h”作区分
成绩评定
实验程序1正确性
2
1.5
1
0.5
0
—
实验程序2正确性
2
1.5
1
0.5
0
—
实验步骤、结果及分析的正确性
6
5
4
3
2
1
成 绩
批阅教师: 20 年 月 日
本文档为【实验三 汇编程序设计(子程序和DOS功能调用)实验报告】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。