汇编实验————实验四:串处理与通过栈传递参数的使用

实验名称

串处理与通过栈传递参数的使用

实验目的

掌握串处理指令在数组中的运用。

实验要求

从键盘接收一个字符串,然后将字符串中的大写字母转为小写字母,最后将转换以后的结果输出。

实验内容

1、将字符串中的大写字母转为小写字母实现为一个过程(procedure),且通过栈来传递参数,一个参数为字符串首地址,一个参数为字符串长度。该过程(procedure)不要求字符串以0结尾。注意:传递参数不能使用MASM简化编程的版本(因为它会简化参数的使用),即不能使用下面的格式的方法:

           name_Func PROC,

                   参数1名: 参数1类型,

                   参数2名: 参数2类型

2、程序中要求用到串操作指令。

3、字符串可以为任意的ASCII码可显示字符。如‘0’,逗号’,’,‘!’等。均要求能正确处理。

实验步骤

实验代码:

INCLUDE Irvine32.inc

 

str_array = 100

 

;数据段

.data

str1 BYTE "Enter string: ",0

str2 BYTE "Final string: ",0

str3 BYTE "You   string: ",0

array BYTE str_array DUP(?)

strln DWORD ?

 

;代码段

.code

main PROC

       call Clrscr

       Call AarrayLength

       mov  edx, OFFSET str3

       call WriteString

       call ShowString

       mov  edx, OFFSET str2

       call Crlf

       call WriteString

       call ChangeStr

      

main ENDP

 

AarrayLength:

       mov  edx, OFFSET str1

       call WriteString

       mov  edx, OFFSET array

       mov  ecx, SIZEOF array

       call ReadString

       mov  strln, eax

       ret

 

ShowString:

       mov  edx, OFFSET array

       call WriteString

       ret

 

ChangeStr:

       mov  edx, OFFSET array

       push edx                                    ; push string address

       call Change

       call ShowString

       call Crlf

       exit

Change:

       push ebp

       mov  ebp, esp

       mov  esi, [ebp+8]

       mov  edi, [ebp+8]

       mov  ecx, strln

chloop:

       lodsb

       cmp  al, 'A'

       jb   continue

       cmp  al, 'Z'

       ja   continue

       add  al, 20h

continue:

       stosb

       loop chloop

      

       pop ebp

       ret  

END main

实验测试例图:

总结

虽然在这次的实验中调试了调试花费了较长的时间,但是获益匪浅,通过书本中的内容以及查阅到的资料,自己对对栈的操作以及存储方式、作用以及栈的地址结构有了更加深入的了解!总体来说获益良多。

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

FLy_鹏程万里

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值