【学习汇编语言】王爽的汇编语言书中更改字母大小写的一道题

编程将datasg段中的每个单词的前4个字母改为大写字母。

datasg段为

datasg segment
	db '1. display      '
	db '2. brows        '
	db '3. replace      '
	db '4. modify       '
datasg ends

编写程序如下
assume cs:codesg, ss:stacksg, ds:datasg

stacksg segment
	dw 0,0,0,0,0,0,0,0	;定义一个栈段,存储cx,以免和内层的cx混合
stacksg ends

datasg segment
	db '1. display      '	;长度为16个字节
	db '2. brows        '
	db '3. replace      '
	db '4. modify       '
datasg ends

codesg segment
 start:mov ax,stacksg
	   mov ss,ax
	   mov sp,16	;sp等于16是让其指向栈顶
	   mov ax,datasg
	   mov ds,ax
	   mov bx,0
	   
	   mov cx,4	;外层循环
	s0:push cx
	   mov si,3
	   mov cx,4	;内层循环
	s1:mov al,[bx + si] ;把第一个字母赋给al
	   and al,11011111b	;在al中把这个字母变为大写,即二进制第五位变为0
	   mov [bx + si],al	;再把大写字符赋给原来的内存位置
	   inc si	;自加1
	   loop s1
	   
	   add bx,16	;到达第二个字母的开头
	   pop cx	;再把外层循环赋给cx,因为例外层循环都是操作的cx
	   loop s0
	   
	   mov ax,4c00h
	   int 21h
	   
codesg ends

end start

下面是程序运行情况


2.

3.

4.

5.

注意:刚开始ds段中的内容13dd,需要把datasg段那段程序运行一下就会变成ds = 13ee的

希望大家一起学习,一起努力


你可能感兴趣的:(【学习汇编语言】王爽的汇编语言书中更改字母大小写的一道题)