寄存器冲突的问题(1005)

简介: 本文为《汇编语言程序设计》1005小节例程。点击链接…进课程主页。问题:编程将data段中的字符串转化为大写。assume cs:codedata segment db 'conversation'data endscode segment start: mov ax,data mov ds,ax

本文为《汇编语言程序设计》1005小节例程。点击链接…进课程主页。

问题:编程将data段中的字符串转化为大写。

assume cs:code
data segment
             db 'conversation'
data ends
code segment 
start:   mov ax,data
         mov ds,ax
         mov si,0
         mov cx,12      
         call capital
         mov ax,4c00h
         int 21h
capital: and byte ptr [si],11011111b
         inc si
         loop capital
         ret
code ends
end start

用0作为字符串的结束

assume cs:code
data segment
         db 'conversation',0
         data ends
code segment
start:    mov ax,data
          mov ds,ax
          mov si,0
          call capital
          mov ax,4c00h
          int 21h
capital:  mov cl, [si]
          mov ch, 0
          jcxz ok
          and byte ptr [si], 11011111b
          inc si
      ok: ret
code ends
end start

将以下字符串转为大写

assume cs:code
data segment
         db 'word',0
         db 'unix',0
         db 'wind',0
         db 'good',0
data ends

code segment
start:  mov ax,data
          mov ds,ax
          mov bx,0
          mov cx,4
       s: mov si,bx
          call capital
          add bx,5
          loop s
          mov ax,4c00h
          int 21h
capital: mov cl,[si]
           mov ch,0
           jcxz ok
           and byte ptr [si],11011111b
           inc si
           jmp short capital
     ok: ret
code ends
end start
;程序中cx既用于循环,又用于读取数据——冲突!

解决了寄存器冲突的程序

;正确的程序
assume cs:code
data segment
         db 'word',0
         db 'unix',0
         db 'wind',0
         db 'good',0
data ends

code segment
   start: mov ax,data
          mov ds,ax
          mov bx,0
          mov cx,4
       s: mov si,bx
          call capital
          add bx,5
          loop s
          mov ax,4c00h
          int 21h
 capital: push cx
          push si
  change: mov cl,[si]
          mov ch,0
          jcxz ok
          and byte ptr [si],11011111b
          inc si
          jmp short change
      ok: pop si
          pop cx
          ret
code ends
end start
目录
相关文章
|
Java Maven Android开发
Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)2
Maven工程的安装配置及搭建(集成eclipse完成案例,保姆级教学)2
253 0
|
机器学习/深度学习 数据挖掘 PyTorch
视觉神经网络模型优秀开源工作:PyTorch Image Models(timm)库(上)
视觉神经网络模型优秀开源工作:PyTorch Image Models(timm)库(上)
利用 HBuilderX 设置新闻中心版式
利用 HBuilderX 设置新闻中心版式
267 2
利用 HBuilderX 设置新闻中心版式
|
资源调度 前端开发
每个前端开发人员都必须知道的 8 个 React 组件库!【建议收藏】
每个前端开发人员都必须知道的 8 个 React 组件库!【建议收藏】
|
存储 Linux 块存储
DRBD+Heratbeat+NFS高可用文件共享存储
DRBD+Heratbeat+NFS高可用文件共享存储
|
消息中间件 Linux API
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
733 1
Linux进程间通信(IPC) Linux消息队列:讲解POSIX消息队列在Linux系统进程间通信中的应用和实践
【问题记录】警告:DownloadWarning: Downloading: https://naciscdn.org/naturalearth/110m/physical/ne_110m_land.
【问题记录】警告:DownloadWarning: Downloading: https://naciscdn.org/naturalearth/110m/physical/ne_110m_land.
【问题记录】警告:DownloadWarning: Downloading: https://naciscdn.org/naturalearth/110m/physical/ne_110m_land.
|
Python
Python下载速度太慢?使用国内网站速度直接飞起(附安装教程)
Python下载速度太慢?使用国内网站速度直接飞起(附安装教程)
3373 0
Python下载速度太慢?使用国内网站速度直接飞起(附安装教程)