汇编语言_实验11:字母转换大小写_ja je jb的使用

将小写字符转换为大写字符,实现逻辑在代码中已经备注

assume cs:code,ds:data,ss:stack

data segment
	db 'Beginners All-purpose Symbolic Instruction COde.',0
data ends

stack segment
	db 128 dup(0)
stack ends

code segment 
start:
	;初始化程序
	mov ax,stack
	mov ss,ax
	mov sp,128
	
	call init_reg
	
	call clear_screen
	
	call show_str
	
	call letterc
	
	mov ax,0b800h
	mov es,ax
	mov di,160*11+2*8
	call show_str
	
	mov ax,4c00h
	int 21h
;=================================
;名称:letterc
;功能:将以0结尾的字符串中的小写字母转变成大写字母
;参数:ds:si 指向字符串首地址
;应用举例:将A-->a,B-->b ...
;判断逻辑:读取一个字符并判断该字符是否大于等于'a',再判断是否小于等于'z',如果等0,直接返回。
					;大于等于简单实现逻辑是:jb				小于等于实现:ja    
;=================================
letterc:
	push dx
	push si
	push di
upLetter:
	mov dl,ds:[si]
	cmp dl,0
	je upLetterRet
	
	cmp dl,'a'
	jb nextLetter
	
	cmp dl,'z'
	ja nextLetter
	
	and dl,11011111B
	mov byte ptr [si],dl
nextLetter:
	inc si
	jmp short upLetter
upLetterRet:
	pop di
	pop si
	pop dx
	ret
;===================================================
;名称:init_reg
;功能:参数初始化
;参数:ds=data; si=0,
	;  es:0b800h,di=0
;应用举例: 
;===================================================
init_reg:
	mov ax,data
	mov ds,ax
	mov si,0

	mov ax,0b800h
	mov es,ax
	mov di,160*10+2*8
	ret

;===================================================
;名称:clear_screen
;功能:清空屏幕
;参数:es=0b800h
;应用举例: 
;===================================================
clear_screen:
	mov cx,2000
	mov dx,0700h
	mov bx,0
clearScreen:
	mov es:[bx],dx
	add bx,2
	loop clearScreen
	ret
;===================================================
;名称:init_reg
;功能:参数初始化
;参数:ds=data;   si=0
	;  es:0b800h, di=0
;应用举例: 
;===================================================
show_str:
	push si
	push di
	push cx
	
	mov cx,0
s0:
	mov cl,ds:[si]
	jcxz s1
	mov byte ptr es:[di+0],cl
	mov byte ptr es:[di+1],01000010B
	inc si
	add di,2
	jmp short s0
s1:
	pop cx
	pop di
	pop si
	ret
code ends
end start

在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值