💿
汇编语言 - 王爽
  • 本电子书信息
  • 各章检测点答案
    • 第 1 章:基础知识
    • 第 2 章:寄存器
    • 第 3 章:寄存器(内存访问)
    • 第 4 章:第一个程序
    • 第 5 章:[BX]和 loop 指令
    • 第 6 章:包含多个段的程序
    • 第 7 章:更灵活的定位内存地址的方法
    • 第 8 章:数据处理的两个基本问题
    • 第 9 章:转移指令的原理
    • 第 10 章:CALL 和 RET 指令
    • 第 11 章:标志寄存器
    • 第 12 章:内中断
    • 第 13 章:int 指令
    • 第 14 章:端口
    • 第 15 章:外中断
    • 第 16 章:直接定址表
    • 第 17 章:使用 BIOS 进行键盘输入和磁盘读写
Powered by GitBook
On this page
  • 实验6
  • 参考链接
  1. 各章检测点答案

第 7 章:更灵活的定位内存地址的方法

实验6

问题 7.9:编程,将 datasg 段中每个单词的前 4 个字母改为大写字母。

assume cs:code, ss:stack, ds:data

data segment
    db '1. display      '
    db '2. brows        '
    db '3. replace      '
    db '4. modify       '
data ends

stack segment
    dw 16 dup (0)
stack ends

code segment
start:
    mov ax,data
    mov ds,ax       ; ds points to data seg

    mov bx,0

    mov ax,stack
    mov ss,ax
    mov sp,16       ; sp points to stack top

    mov cx,4        ; outer loop 4 rows
    
sout:
    push cx         ; push cx (outer loop counter) to stack
    mov si,0        ; offset of each char

    mov cx,4        ; inner loop 4 cols
sin:
    mov al,[bx+si+3]    ; first char of string is at pos 3
    and al,11011111b    ; upper char
    mov [bx+si+3],al    ; overwrite ds
    inc si
    loop sin

    add bx,16       ; next string
    pop cx          ; restore cx (outer loop counter)
    loop sout

    mov ax,4c00h
    int 21h

code ends

end start

参考链接

  • 汇编语言(王爽第三版)实验6 实践课程中的程序 - 筑基2017 - 博客园

Previous第 6 章:包含多个段的程序Next第 8 章:数据处理的两个基本问题

Last updated 4 years ago

https://www.cnblogs.com/Base-Of-Practice/articles/6883902.html
程序执行完后,内存中的情况