王爽汇编语言--寄存器冲突问题

本文介绍了一个使用汇编语言实现的子程序,该程序能够将一系列以0结尾的字符串转换为大写形式。通过定义不同的字符串并利用循环结构,程序实现了对每个字符串的逐个转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目:设计一个子程序,功能:将一个全是字母,以0为结尾的字符串,转化为大写

定义类似于:  db 'cnversation',0

代码如下:

(由于在代码块中排版会有问题,所以就不放在里面惹)

assume cs:code
;定义要转换的字符
data segment
    db 'word',0
    db 'unix',0
    db 'wind',0
    db 'good',0
data ends

code segment
    strart:mov ax,data
           mov ds,ax
           mov bx,0
           
           mov cx,4          ;四个部分,循环4次
         s:mov si,bx
           call capital      ;call capital模块
           add bx,5          ;一个部分为5个字节
           loop s
           
           mov ax,4c00h
           int 21H
           
   capital:push cx          ;压栈,之所以将cx,si压栈,是因为change模块中用到了cx和si,为了
           push si          ;为了避免冲突
           
    change:mov cl,[si]                    ;当[si]为0时,整体ch,cl都为0,cx为0
           mov ch,0                       
           jcxz ok                        ;cx为0则跳转到ok
           and byte ptr [si],11011111b    ;将字符转换为大写,若用[cl]是无法转换为大写的
           inc si
           jmp short change
    
        ok:pop si
           pop cx
           ret
code ends
end start

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值