问题7.7,编程,将datasg段中每个单词改为大写字母
;目的:处理数据段中的数据,将每一行的小写字母大写
;编写:Tony
;语言:asm
;时间:2020.3.24
;定义代码段、数据段、栈段
assume cs:code,ds:data,ss:stacksg
;数据段
data segment
db ‘ibm………….’
db ‘aoc………….’
db ‘ios………….’
db ‘asm………….’
data ends
;栈段
stacksg segment
dw 0,0,0,0,0,0,0,0 ;初始化8个字数据单元(不要把数据放在单引号内)
stacksg ends
;代码段
code segment
start: mov ax,stacksg ;栈段地址送ax
mov ss,ax ;ax中的数据送栈寄存器
mov sp,10h ;设置栈底的位置
mov ax,data ;数据段地址送ax
mov ds,ax ;ax中的数据送数据段寄存器
mov bx,0 ;初始化数据段中的偏移地址
mov cx,4 ;初始化外层循环次数
s: push cx ;保存外层循环数据到栈中
mov si,0 ;初始化数据段中的偏移地址
mov cx,3 ;初始化内层循环次数
s1: mov al,[bx+si] ;将ds:[bx+si]中的数据送al
and al,11011111b ;将al中的第5位置0,将字母大写
mov [bx+si],al ;将字母大写后写回内存单元
inc si ;偏移地址自增1
loop s1 ;循环处理将字母大写
add bx,10h ;修改段数据中行偏移地址
pop cx ;出栈恢复cx的数据
loop s ;循环处理段数据中的4段数据
mov ax,4c00h
int 21h
code ends
end start