微机原理实验4——子程序的定义与调用
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
班级:计科1202班姓名:陈秉耀学号:201216010106
实验4——子程序的定义与调用
1、实验目的
掌握子程序编写和调用;
掌握子程序的参数传递和返回值的获取方法;
2、实验内容
实验2(2):“调用DOS中断,完成字符串的以下输入和输出操作。具体要求是:①调用INT 21H的AH=09H子功能输出提示信息“Input String:”,②调用INT 21H的AH=0AH 子功能输入一个字符串,③输出回车(ASCII码为0DH)、换行(ASCII码为0AH),④将输入字符逐一改大写后输出。
设计四个子程序,分别对应上面每一小步子功能,在主程序调用。
============================================================================ ====
实验报告
============================================================================ ====
DATAS SEGMENT
;此处输入数据段代码
keynum =255
string db keynum;定义键盘需要的缓冲区
db 0
db keynum dup(0)
string1 db'Input String',"$"
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
;此处输入代码段代码
call dp1
call dp2
call dp3
call dp4
MOV AH,4CH
INT 21H
;输出提示信息Input String
dp1 proc
push dx
mov ah,09h
mov dx,offset string1
int 21h
pop dx
ret
dp1 endp
;输出回车,换行
dp2 proc
push ax
mov ah,02h
mov dl,0dh
int 21h
mov ah,02h
mov dl,0ah
int 21h
pop ax
ret
dp2 endp
;输入一个字符串
dp3 proc
push dx
mov dx,offset string
mov ah,0ah
int 21h
pop dx
ret
dp3 endp
;将输入字符逐一改大写后输出
dp4 proc
push bx
mov dl,0ah ;换行
mov ah,2
int 21h
mov bx,offset string+1
mov cl,[bx]
mov ch,0
again: inc bx
mov dl,[bx]
cmp dl,'a'
jb disp
cmp dl,'z';比较是否为小写字母
ja disp
sub dl,20h;将小写字母转化为大写字母
disp:mov ah,2
int 21h
loop again
pop bx
ret
dp4 endp CODES ENDS
end start
\