文章目录

  • 解析
    • movsb指令(mov string byte)
    • movsw指令(mov string word)
    • jns指令(jmp not sf)
  • 效果
    • movsb指令显示"Hello"
    • movsw指令显示"BOCHS"
    • jns指令显示"HelloBOCHS"
  • 代码
    • 前期准备
    • 批量传送指令 movsb
    • 批量传送指令 movsw
    • 条件转移 jns
    • 字符填充

解析

movsb指令(mov string byte)

以ds:si为源地址,es:di为目的地址进行传送,每次传送一个字节

cx指定传送次数

DF寄存器设置数据读取以及数据填入的方向
DF=0时,每次操作后si、di递增
DF=1时,每次操作后si、di递减

cld指令将DF置0
std指令将DF置1

movsw指令(mov string word)

以ds:si为源地址,es:di为目的地址进行传送,每次传送一个字

cx指定传送次数

当标志寄存器中标志位DF设置数据读取以及数据填入的方向
DF=0时,每次操作后si、di递增
DF=1时,每次操作后si、di递减

cld指令将DF置0
std指令将DF置1

jns指令(jmp not sf)

1、
条件跳转指令
根据标志寄存器中标志位SF(也称符号位)的值判断是否跳转
SF=0时,发生跳转
SF=1时,则不跳转

2、
与跳转指令js刚好相反

3、
dec指令影响标志位SF
当dec指令计算结果的最高位,也就是符号位为0时,SF置0,符号位为1时,SF置1

效果

movsb指令显示"Hello"

movsw指令显示"BOCHS"

jns指令显示"HelloBOCHS"

代码

前期准备

start:jmp codedata:;也可使用ASCII码text0 db 'H',0x07,'e',0x07,'l',0x07,'l',0x07,'o',0x07text1 db 'B',0x07,'O',0x07,'C',0x07,'H',0x07,'S',0x07code:;es:di指向目的内存地址mov ax,0xB800mov es,axmov di,0x0;ds:si指向源内存地址mov ax,0x07c0mov ds,axmov si,text0

批量传送指令 movsb

 ;#####################字符串"Hello"打印,单个byte为传送单位;传送次数mov cx,text1-text0;由低地址到高地址传送cld;传送开始rep movsb

批量传送指令 movsw

 ;换行显示mov di,160;#####################字符串"BOCHS"打印,两个byte为传送单位;传送次数mov cx,(code-text1)/2;由低地址到高地址传送cld;传送开始rep movsw

条件转移 jns

 ;换行显示mov di,320;#####################条件跳转传送;ds:si指向源内存地址mov ax,0x07c0mov ds,axmov si,text0;传送次数 mov cx,code-text0dec cx
l:;al做中转站mov al,[ds:si]inc simov byte [es:di],alinc didec cxjns l

字符填充

 jmp $
current:;字符填充times 510-(current-start) db 0db 0x55,0xAA       ;BIOS要求:0x55,0xAA结尾

汇编语言练习_2_批量传送 条件转移相关推荐

  1. X86汇编语言从实模式到保护模式05:循环、批量传送和条件转移

    目录 1. 跳过非指令数据区 1.1 跳转目的 1.2 续行符的作用 2. 逻辑段地址的重新设定 2.1 汇编地址与偏移地址的关系 2.2 汇编地址与偏移地址不匹配时的内存访问 2.3 重置逻辑段地址 ...

  2. 信捷PLC 批量传送位 MOV DMOV QMOV

    信捷PLC有没有类似三菱PLC那要的批量传送多位的指令呢,有的,如下图所示. MOV DX0 D0  传送X0~X17 共16个点到D0.0~D0.15 DMOV DX0 D10  传送X0~X37 ...

  3. postman的批量传送数据和接口关联

    一:批量传送数据 1.在本地创建一个文本文档,上面写入我们的数据. ①手机号②key值③返回值 2.在postman里面接受我们的数据,用{{变量名}} 3.因为咱们的手机号和keys值都接收了,那个 ...

  4. 第6章 循环、批量传送和条件转移-1.34h

    c06_mbr.asm ;代码清单6-1;文件名:c06_mbr.asm;文件说明:硬盘主引导扇区代码;创建日期:2011-4-12 22:12 jmp near startmytext db 'L' ...

  5. PLC批量传送指令应用(实现队列移动)

    传送指令可以实现2个数据的交换,这个是最简单不过的了,不清楚的可以参看我的另一篇的博文: 三菱Q系列5U系列传送类指令应用(ST语言)_RXXW_Dor的博客-CSDN博客https://blog.c ...

  6. sftp shell 批量上传文件_如何在shell脚本里使用sftp批量传送文件-阿里云开发者社区...

    主要步骤如下: 1.为运行shell脚本的本地用户生成密钥对 2.将其中的公钥分发到sftp欲登录的远程服务器上 3.编写并以上面的本地用户运行shell脚本 一.生成密钥对 在shell脚本中使用s ...

  7. linux脚本里使用sftp,如何在shell脚本里使用sftp批量传送文件

    主要步骤如下: 1.为运行shell脚本的本地用户生成密钥对 2.将其中的公钥分发到sftp欲登录的远程服务器上 3.编写并以上面的本地用户运行shell脚本 一.生成密钥对 在shell脚本中使用s ...

  8. 三菱PLC批量传送指令BMOV

    三菱PLC学习-成批传送指令BMOV 指令格式 BMOV S DN 操作数 内容取值 S 进行传送的数据或其存储字软元件首址 D 传送数据目标的字软软件首址 N 传送的字元件的点数 ,N<=51 ...

  9. 计算机知识点怎么背,计算机组成原理面试知识点整理可直接背诵

    第一章 概述 冯诺依曼机 特点: 1.计算机硬件系统由运算器.存储器.控制器.输入设备.输出设备5大部件组成 2.指令和数据以同等地位存储在存储器中,并可按地址寻访 3.指令和数据均用二进制代码表示 ...

最新文章

  1. python代码写完怎么运行-教你如何编写、保存与运行 Python 程序
  2. 推荐!入门人工智能必看的45篇论文(文末下载)
  3. centos7 安装redis_Redis6安装(上) - 单机单实例
  4. php 正则匹配 %3e,在shell脚本中使用正则表达式
  5. 10万辅导老师困境:上半年被抢,下半年被裁
  6. 【月报】Java知音的四月汇总
  7. python哈姆雷特词频统计_python—文本词频统计 哈姆雷特 txt 下载
  8. 关于IE、Firefox、Opera页面呈现异同(转载)
  9. Spring Autowiring @Qualifier example
  10. kotlin协程_Kotlin协程
  11. mysql int 11 最大多少_mysql - mysql中int(11)的列大小是多少? - 堆栈内存溢出
  12. Java8-为什么选择java8
  13. pdf格式如何压缩文件大小?
  14. qpython 3h_QPython 3H
  15. html判断是否在微信里打开,JavaScript判断浏览器内核,微信打开自动提示在浏览器打开...
  16. java ImageIO处理
  17. 计算机设置曲线超高方法,32604007曲线外轨超高设置方法及计算公式.pdf
  18. 家庭备忘记事便签软件哪个实用?
  19. android-极限测试-话机存储空间极限测试(bat脚本)
  20. 夏天到了,蚊子多了,下面给大家几个防蚊子的建议

热门文章

  1. 电瓶车行驶过程中突然无动力,加速没反应,怎么办?
  2. 25岁,一个北漂程序员,如果不想35 岁被淘汰,请把它当成一种信仰!
  3. 轻断食过程中的身体变化
  4. BootStrap之标签页切换
  5. 学计算机语言需要英语基础吗,数学和英语不好的人能学编程吗?
  6. qq发消息时键盘挡住了_QQ的说说被键盘挡住了怎么办
  7. django母版用法
  8. VS2008+AnkhSVN搭建源代码管理版本库
  9. 使用matlab建立个人简历,HTML 使用表格制作简单的个人简历
  10. LensFlare Studio for Mac 6.3 镜头光晕特效软件 破解版下载