汇编语言:将datasg段中每个单词的前4个字母改写为大写字母。。问题如下。。
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 bx,0
mov cx,4
s: push cx
mov si,3
mov cx,4
s0: mov al,[bx+si]
and al,0dfh //与运算
mov [bx+si],al
inc si
loop s0
add bx,16
pop cx
loop s
mov ax,4c00h
int 21h
codesg ends
end start
不是很理解这个代码的答案。。。能否哪位高手能把代码的每一句的含义写上。。。
追问:mov ax,stacksg
mov ss,ax
mov sp,16
是啥意思。。。。为什么要有这三步。。。
答案:其他的都是固定格式,或者基本寻址方式,和,条件跳转实现的循环
算法就这一句
and al,0dfh //与运算
意思是把大写字母转化为小写字母,(0df)h=(1101 1111)b,
这个与运算是把该字符的第6位清零,其他位不变,你仔细观察就会发现,大写字母和小写字母的区别是,只用这一位不同,大写字母的第6为0,而小写字母的第6位为1,因此把大写字母变成小写字母只需把字母和0dfh相与就可以了,当然这还有一点好处是,原来是大写字母的不会影响
其他:난 바보였었죠. 내가 바보였었죠. @:1"1 jq c}{Ynkb]p 후회해도 늦었죠 2...
上一个:已编好的c语言程序怎么改成汇编语言程序
下一个:新手问题!请问如何用ADC0809实现直流电压表?汇编语言的