美文网首页
汇编语言(第三版)-- 问题7.9

汇编语言(第三版)-- 问题7.9

作者: Cichar | 来源:发表于2017-03-18 10:45 被阅读0次

将datasg段中每个单词的前四个字母改为大写字母

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

stacksg segment
  dw 0,0,0,0,0,0,0,0      # 8个字单元用作栈空间
stacksg ends

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

codesg segment
   mov ax,stacksg
   mov ss,ax              # 定义栈段
   mov sp,16              # 定义栈底
   mov ax,datasg
   mov ds,ax              # 定义数据段
   mov bx,0               # 定义数据段偏移

   mov cx,4               # 定义外层循环次数

s0: push cx               # 将外层循环次数压栈
   mov si,0               # 定义字符串偏移
   mov cx,4               # 定义内层循环次数

s: mov al,[bx+3+si]       # 将要处理的字母放入低位寄存器
   and al,11011111b       # 将小写字母转换为大写,大写字母第6位为0
   mov [bx+3+si],al       # 将处理完的字母传回原本的字符串位置
   inc si                 # 字符串偏移自增
   loop s                 # 内层循环

   add bx,16              # 数据段偏移处理
   pop cx                 # 将保存的外层循环次数存入cx寄存器
   loop s0                # 外层循环

   mov ax,4c00h
   int 21h

codesg ends
end start

相关文章

网友评论

      本文标题:汇编语言(第三版)-- 问题7.9

      本文链接:https://www.haomeiwen.com/subject/qxdunttx.html