王爽 汇编语言第三版 问题 7.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)

 

 

问题 7.9: 将 datasg 段中前 4 个字母变成大写

 

汇编代码:

assume cs:codesg,ss:stacksg,ds:datasg

stacksg segment
    db 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, datasg
    mov ds, ax
    
    mov ax,stacksg  ; 栈 用来临时保存数据
    mov ss,ax
    mov sp,16
    
    mov bx,0  ; 表示行
    mov cx,4  ; 外层循环循环次数
    

lop_1:
    push cx
    mov si,3  
    mov cx,4
   
lop_2:
    mov al,[bx+si]
    and al,11011111b
    mov [bx+si],al
    inc si
    loop lop_2

    add bx,16  ; bx + 16 表示 指示下一行
    pop cx
    loop lop_1  
       
    mov ax, 4c00h
    int 21h
codesg ends

end start
    

程序运行前 数据段 数据:

程序运行后 数据段 数据

分析:

第7章 【更灵活的定位内存地址的方法】  主要学习了一下内容:

 

汇编语言是按行一条一条指令进行执行的,可以按高级语言进行缩进来写汇编程序例如可以按照 Pyhton 的空格缩进 )最后再把缩进给去掉这样可以更好的理解汇编的逻辑和层级关系

 

按 python 格式的缩进后的汇编代码:

assume cs:codesg,ss:stacksg,ds:datasg
 
stacksg segment
    db 0,0,0,0,0,0,0,0
stacksg ends
 
datasg segment
    db '1. display      '  ;16字节
    db '2. brows        '  ;16字节
    db '3. replace      '  ;16字节
    db '4. modify       '  ;16字节
datasg ends    
 
codesg segment
 
start:
    mov ax, datasg
    mov ds, ax
    
    mov ax,stacksg  ; 栈 用来临时保存数据
    mov ss,ax
    mov sp,16
    
    mov bx,0  ; 表示行
    mov cx,4  ; 外层循环循环次数
 
    lop_1:
        push cx
        mov si,3  
        mov cx,4
   
        lop_2:
            mov al, [bx+si]
            and al, 11011111b
            mov [bx+si], al
            inc si
            loop lop_2
 
        add bx,16  ; bx + 16 表示 指示下一行
        pop cx
        loop lop_1  
       
    mov ax, 4c00h
    int 21h
codesg ends
 
end start

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值