第七章:实验六
编程将datasg段中每个单词的前4个字母改为大写字母
寻址方式:
采用基址变址寻址[bx+si]
二重循环问题的处理:
采用栈,外层循环开始时,将cx入栈,内层循环开始时,改变cx的值,内层循环结束时,将栈中的值pop出,传给cx。
采用and和or指令对字母的大小写进行转换
ASCLL(大写)ASCLL(小写)
A 0100 0001a 0110 0001
字母用八位二进制数表示,大小写的区别是第5位上0和1的区别。 大写字母-小写字母 or 0100 0001,0010 0000b 小写字母-大写字母 and 0110 0001, 1101 1111b
代码
assume cs
:codesg
,ss
:stacksg
,ds
:datasg
stacksg segment
dw
0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db
'1. display '
db
'2. brows '
db
'3. replace '
db
'4. modify '
datasg ends
codesg segment
start
: mov ax
,stacksg
mov ss
,ax
mov sp
,16
mov ax
,datasg
mov ds
,ax
mov cx
,4
mov bx
,0
s0
:
push cx
mov si
,0
mov cx
,4
s
:
mov al
,[bx
+si
+3]
and al
,11011111b
mov
[bx
+si
+3],al
inc si
loop s
add bx
,16
pop cx
loop s0
mov ax
,4c00h
int 21h
codesg ends
end start