《汇编语言》王爽——第7章问题7.9

问题7.9:

编程,将data段中每个单词的前四个字母改为大写字母

assume cs:code,ds:data,ss:stack
data segment
 db '1.display       '
 db '2.brows         '
 db '3.replace       '
 db '4.modify        '
 data ends
 stack segment
 dw 0,0,0,0,0,0,0,0
 stack ends
 code segment
 start:
 .....
 ;编写code段代码
 
 code ends
 end start 

代码如下:

assume cs:code,ds:data,ss:stack
data segment
 db '1.display       '
 db '2.brows         '
 db '3.replace       '
 db '4.modify        '
 data ends
 stack segment
 dw 0,0,0,0,0,0,0,0
 stack ends
 code segment
 start:
 mov ax,data
 mov ds,ax 
 mov ax,stack
 mov ss,ax
 mov sp,16 ;栈的容量为16个字节
 mov bx,0  ;初始bx为0 后面累加16 bx+16...
 mov cx,4 ;大循环4次
 s:       ;外循环s
 push cx  ;cx入栈保存 
 mov si,0 ;si共加4次
 mov cx,4 ;小循环也是4次
 s0:      ;内循环s0
 mov al,[bx+si+2]  ;定位到字母 前面'x.'占用两个字节所以从2开始
 and al,11011111B  ;与运算转化大写
 mov [bx+si+2],al  ;存放回原存储单元
 inc si
 loop s0
 
 add bx,16;bx+16 进行下一个字符串的修改
 pop cx   ;从栈中取出cx 进行大循环
 loop s
 
 mov ax,4c00h
 int 21h
 
 code ends
 end start 

 

 

debug跟踪效果

 

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值