第七章:实验六
编程将datasg段中每个单词的前4个字母改为大写字母
寻址方式:
采用基址变址寻址[bx+si]
二重循环问题的处理:
采用栈,外层循环开始时,将cx入栈,内层循环开始时,改变cx的值,内层循环结束时,将栈中的值pop出,传给cx。
采用and和or指令对字母的大小写进行转换
ASCLL(大写) | ASCLL(小写) |
---|---|
A 0100 0001 | a 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