- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二次实验二 汇编语言程序设计
《微机实验及课程设计》
实验报告
学 号:
专 业: 测控技术与仪器 实 验 室: 516
评定成绩: 审阅教师:
实验目的
1、近一步熟悉汇编语言的编辑、宏汇编、链接和运行的基本概念
2、熟练掌握动态调试程序TD/DEBUG的常用指令和窗口功能,学会用TD/DEBUG调试程序,修改数据和寄存器环境
3、熟悉掌握汇编语言程序的典型数据结构设计、典型程序控制方法,了解DOS/BIOS功能调用的基本方法
二、实验内容(必做)
2-1、从键盘输入任意字符串后,存入自定义存储单元,判断处理后将字符串中小写字母转换为大写字母(其它字符不变),并按原顺序将这些字符在屏幕上显示出来(参考程序P36),并显示字符串“The total number is XXXXX”。
2-2、从键盘输入一个0~255之间的十进制数,将其转换为16进制数,并在屏幕上显示变换前后的数据(参考程序P38)。
实验内容(选做)
2-3、在内存中定义5个十六进制带符号数(范围为-128~+127),请将它们按从大到小排序,并将排序前后的数据显示在屏幕上。
实验源程序(主要部分)和流程图
2-1、将字符串中小写字母转换为大写字母
data segment
input db 100,100 dup(0)
str1 db 0dh,0ah,please input string,0dh,0ah,$
str2 db 0dh,0ah,The final result:,0dh,0ah,$
str3 db 0dh,0ah,The total number is:,0dh,0ah,$
data ends ;定义数据段
sta segment
db 256 dup(0)
sta ends ;定义堆栈段
code segment
assume cs:code,ds:data,ss:sta
start:
mov ax,data
mov ds,ax
mov ax,sta
mov ss,ax ;初始化各段基址
lea dx,str1
mov ah,09h
int 21h ;显示提示字符串1
lea dx,input
mov ah,0ah
int 21h ;输入要转化的字符串
lea dx,str2
mov ah,09h
int 21h
xor cx,cx ;将cx清零
mov cl,input[1] ;由于直接将input[1](即实际字符个数)复制给cx会
;出现操作数宽度不匹配的错误
mov si,2
l1:mov dl,input[si]
cmp dl,61h ;判断该字符是否为小写字母
jb l2
cmp dl,7ah
ja l2
sub dl,20h ;若是,则减20h
l2:mov ah,2 ;显示该字符
int 21h
inc si
loop l1 ;继续判断,直到cx=0,即所有字符转化完毕
lea dx,str3
mov ah,09h
int 21h ;显示字符串3
mov dl,input[1]
add dl,30h ;将输入字符个数转换为ASCⅡ码
mov ah,02h
int 21h ;显示出字符个数
mov ah,4ch
int 21h ;程序返回
code ends
end start
2-2.十进制数转换为16进制数
data segment
right db 1
input db 4,5 dup (0)
output db 00h
ten db 0ah
string1 db 0dh,0ah,please input your number(0~255),0dh,0ah,$
string2 db 0dh,0ah,the number you input is(00H~FFH),0dh,0ah,$
string3 db 0dh,0ah,The number
文档评论(0)