【第七章】实验6

1.将data段中存储的字母全部变为大写

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

data segment
	db 'ibm             '
	db 'dec             '
	db 'dos             '
data ends

stack segment
	dw 0,0,0,0,0,0,0,0
stack ends

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

	;初始化栈
	mov ax,stack
	mov ss,ax
	mov sp,16
	
	;将cx存储到栈中,之后更新内部loop的值。内部loop结束后从栈中取出
	mov cx,3
s:	push cx
	mov cx,3
	mov si,0
s0:
	;先确定每一行的坐标bx
	;再确定每一列的坐标si
	mov al,ds:[bx+si]
	and al,11011111b
	mov ds:[bx+si],al
	inc si
	loop s0
	pop cx
	add bx,16
	loop s

	mov ax,4c00h
	int 21h
code ends

end start

2.将data段中定位的字符中前四个字符改为大写

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

stack segment
	 dw 0,0,0,0,0,0,0,0
stack ends

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

code segment
start:	mov ax,stack
	mov ss,ax
	mov sp,16

	mov ax,data
	mov ds,ax
	mov bx,0

	mov cx,4
s:	push cx
	mov cx,4
	mov si,0

s0:	mov al,ds:[bx+si+3]
	and al,11011111b
	mov ds:[bx+si],al
	inc si
	loop s0
	add bx,16
	pop cx
	loop s

	mov ax,4c00h
	int 21h
code ends

end start