[Chapter 11] - [实验11]

本实验考察知识点

  • 有条件转移的意识,以及用法

    • 与0比较,是否相等
    • 区间的判断,如[61h,7Ah]
  • 小写转大写(AND用法,是老知识点)

思路:

  • 读取源字符串

  • 处理

    • 筛选出哪些字符是小写
    • 小写转大写
    • 循环处理(在不知字符串元素个数的情况下,有2种方式:1.计算出个数;2.条件判断)
  • 写入目标位置

代码1:

;一、mov配合jcxz

assume ds:data,cs:code
data segment
	db 'Hello Assembly!',0
	db '----------------'
data ends

code segment
start:	mov ax,data
		mov ds,ax
		mov si,0

		mov es,ax
		mov di,16

		call letterc

		mov ax,4c00h
		int 21h
		
;程序名:letterc
;功能:将任意长度的字符串中的小写字母转为大写(不对符号进行处理)
;参数:ds:si指向源字符串,es:di指向目标字符串
;返回结果:无
letterc:	push si
			push di
			push cx
			mov cx,0;初始化
			s:	mov cl,[si]
				jcxz program_end

				;限定仅小写字母的ASCII范围内
				cmp cl,61h
				jb next
				cmp cl,7Ah
				ja next

				;执行 小写转大写 的动作
				and cl,11011111b

				;不论是否是小写,对目标字符串都要执行next动作
				next:	mov es:[di],cl;此处有2种情况:cl被修改过 或 cl未被修改过。 都要复制到目标位置
						inc si
						inc di
						jmp short s

			program_end:mov es:[di],cl;末尾0复制到目标处

			pop cx
			pop di
			pop si
			ret

code ends
end start

代码2:

;二、mov配合je
assume ds:data,cs:code

data segment
	db 'Hello Assemaly!';15个字符
	db 0;末尾0
	db '----------------';16个字符
data ends

code segment
start:	mov ax,data
		mov ds,ax
		mov si,0

		mov es,ax
		mov di,16

		call letterc

		mov ax,4c00h
		int 21h

;程序名:letterc
;功能:将任意长度的字符串中的小写字母转为大写(不对符号进行处理)
;参数:ds:si指向源字符串,es:di指向目标字符串
;返回结果:无
letterc:	
		push si
		push di
		push ax

		s:	mov al,[si]
			cmp al,0
			je program_end

			;限定仅小写字母的ASCII范围内
			cmp al,61h
			jb next
			cmp al,7Ah
			ja next

			;执行 小写转大写 的动作
			and al,11011111b

			;不论是否是小写,对目标字符串都要执行next动作
			next:	mov es:[di],al
					inc si
					inc di
					jmp short s

program_end:mov es:[di],cl;末尾0复制到目标处

			pop ax
			pop di
			pop si
			ret
			
code ends
end start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值