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

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

时间:2022-12-20 17:07:42浏览次数:60  
标签:16 中前 db mov datasg ax 7.9 bx

 

 

问题 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.9 将 datasg 段中前4个字母变成大写(汇编中的双重循环)_缩进

程序运行后 数据段 数据

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

分析:

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

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

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

 

汇编语言是按行一条一条指令进行执行的,可以按高级语言进行缩进来写汇编程序例如可以按照 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

 

 

 

标签:16,中前,db,mov,datasg,ax,7.9,bx
From: https://blog.51cto.com/csnd/5956105

相关文章

  • Kafka快速上手(2017.9官方翻译)
    为了帮助国人更好了解、上手kafka,特意翻译、修改了个文档。官方Wiki: http://kafka.apache.org/quickstart ​​​​快速开始本教程假定您正在开始新鲜,并且没有现有......
  • 二: OEL7.9 安装 Oracle12cR2
    标签(空格分隔):oracle系列一:系统环境介绍系统:oraclelinux7.9x64主机名:cat/etc/hosts----172.16.10.31flyfish31172.16.10.32flyfish32172.......
  • CentOS7.9.2009离线安装NGINX1.20.2版(附资源包)
    ​​nginx1.20.2离线安装包(含gcc、gcc-c++、pcre、libtool、nginx).zip-Web9离线安装NGINX1.20.2版1.资源​​nginx1.20.2离线安装包(含gcc、gcc-c++、pcre、libtool、nginx).z......
  • Centos 7.9 基于二进制文件部署kubernetes v1.25.5集群
    简述Kubernetes(简称为:k8s)是Google在2014年6月开源的一个容器集群管理系统,使用Go语言开发,用于管理云平台中多个主机上的容器化的应用,Kubernetes的目标是让部署容器化的应用......
  • centos 7.9修改网卡名
    文档课题:centos7.9修改网卡名.1、系统检查[root@liujun~]#cat/etc/*releaseCentOSLinuxrelease7.9.2009(Core)NAME="CentOSLinux"VERSION="7(Core)"ID="centos"ID......
  • oel 7.9搭建oracle 11.2.0.4物理备库
    文档课题:oel7.9搭建oracle11.2.0.4物理备库.实验目标:主库已存在一个备库,搭建第二个备库.创建时间:2021/12/011、规划2、磁盘处理2.1、划分磁盘空间#fdisk/dev/sdb为meddoc......
  • Centos7.9 安装 ElasticSearch
     先安装好jdk1.8下载es: ​​https://www.elastic.co/cn/downloads/elasticsearch​​解压:tar-zxvfelasticsearch-7.16.2-linux-x86_64.tar.gz 修改系统参数 修改系......
  • VMware快速搭建k8s集群 (CentOS-7.9|Docker-19.03.11|K8S-1.19.6|Flannel)kubeadm安装
    0.规划k8s-master192.168.239.120CPU:2核 内存:2G 磁盘:10GCentOS7.9k8s-node1192.168.239.121CPU:2核 内存:2G 磁盘:10GCentOS7.9k8s-node2192......
  • CentOS 7.9 部署 Zabbix 6.2.6
    系统版本CentOSLinuxrelease7.9.2009(Core)nginx 版本 nginx-1.22.1php 版本8.0.26mysql 版本8.0.31zabbix 版本6.2.6网上教程设置时都大同小异,部分教程关键步......
  • 验证darknet中前处理做图像缩放(双线性内插值法)scale的算法效果
    ​​DARKNET中使用的缩放算法是双线性内插值法,这里就实际验证一把DARKNET中scale的工作原理与效果:首先这是一张原图,画面中的是南京明城墙玄武门,玄武湖的正门。18年国庆带娃......