8086汇编实现大小写转换(1分)


前言

昨天晚上去做实验了,老师要求凑够3分,自夏季学期二叉树遍历的课设打击,我自知做难题力不从心,上次我没得选择,这次我有了选择的余地,就挑了一道1分的大小写转换和一道2分的猜数字游戏,来完成本次的汇编实验


一、大小写转换题目要求

• 输入:
➢从键盘输入一个字符
• 处理:
➢如果是小写字母,转换为对应的大写字母
➢如果是大写字母,转换为对应的小写字母
• 输出:
➢开始时提示用户输入
➢将结果显示在屏幕上
➢如果输入的不是字母,在屏幕上给出提示信息。

二、代码设计和测试

1.全部代码

代码如下:(CSDN没有汇编用的语法高亮,属实8行)

		.model  small
		.data
inf 	db	'Please input a letter:', '$' ;提示用户输入
wrong   db	'Not a letter!', 0dh, 0ah, '$' ;输入错误信息提示
crlf    db	0dh, 0ah, '$'         
		.code
start:	mov	ax, @data
		mov	ds, ax
		lea dx, inf
		mov	ah, 9
		int	21h  	;21h中断9号功能,显示提示串
        mov ah, 1
        int 21h  	;21h中断1号功能,读入字符
        ;下面就是根据ascii码值判断字符类别
        cmp al, 41h
        jb  error 	;比大写字母'A'还小
        cmp al, 5bh
        jb  uplow 	;'A'~'Z'
        cmp al, 61h
        jb  error	;大于'Z'小于'a'
        cmp al, 7bh
        jb  uplow	;'a'~'z'
        jmp error	;大于'z'
uplow:  xor al, 20h	;完成大小写转换
        lea dx, crlf
		mov	ah, 9
		int	21h
        mov dl, al
        mov	ah, 2
		int	21h
        jmp done
error:  lea dx, crlf	;错误信息提示
		mov	ah, 9
		int	21h
        lea dx, wrong
		mov	ah, 9
		int	21h
done:	mov	ax, 4c00h
		int	21h
		end	start

2.测试

输入小写字母
请添加图片描述
输入大写字母
请添加图片描述
输入非字母字符
请添加图片描述

可以看到有输入提示,能正确实现大小写转换,输入非字母字符时能进行错误提示。

需要注意的地方

(1)把代码段段地址给到ds寄存器
请添加图片描述
写这个程序的时候,我是有注意到,有加上啦,但是之前自己试着写课件上的BCD码显示的汇编程序时没注意,debug半天没想明白,看了一下HELLO_WORLD的代码,我哭了,第一次还是要注意一下。

(2)大小写转换的方式
请添加图片描述
其实只是反转了ASCII码中的一位。
例如小写字母a,是61H,二进制即01100001
对应大写字母A,是41H,二进制即01000001
只有一位不同,其他字母大小写增长速度也是一致的,所以只要反转那一位就好了。

总结

作为被选中的1分题,总体而言是很简单了,所以我较多的心思都放在让提示和显示更加美观,以及如何划分分支上面。适合新手练手。

  • 3
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值