当前位置:编程学习 > 汇编语言 >>

汇编语言:将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实现直流电压表?汇编语言的

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,