汇编语言第五章总结

两种指令[BX]和loop指令

下面将知识点总结如下:

一、先介绍描述性符号()

(ax)(al)(20000H)

((ds)*16+(bx))

()中的元素可以有三种类型:

1.寄存器名  2.段寄存器名  3.内存单元的物理地址(20位数据)

举例(X)应用:

1.ax内容为0010H,(ax)=0010H

2.2000:1000内容为0010,(21000H)=0010H

3.指令 mov ax,[2],(ax)=((ds)*16+2)

4.push ax:

(sp)=(sp)-2

((ss)*16+(sp))=(ax)

5.pop ax:

(ax)=((ss)*16+(sp))

(sp)=(sp)+2

(X)中可表示字或者字节,具体看寄存器而定

如:

(al)=(20000H)得到数据字节型

(ax)=(20000H)得到数据字型

二、mov ax,[idata]  中的idata为常量

三、inc bx 为bx内容加1

三、类似于

mov ax,[0]

mov al,[0]

实现

mov ax,[bx]

mov al,[bx]

[bx]也表示一个内存单元,也可以将内存单元送入ax

四、loop为循环指令,CPU执行loop时:

1.(cx)=(cx)-1;

2.判断cx的值,不为零转至标号处执行程序,如果为零向下执行

如程序:

assume cs:code

code segment

  mov ax,2

  mov cx,11

 s:add ax,ax

  loop s

  mov ax,4c00h

  int 21h

code ends

end

五、将字节单元中数据8位给16位寄存器ax,如设ffff:0006单元数据为XXh时,如下指令:

mov ax,offffh

mov ds,ax

mov bx,6

mov al,[bx]

mov ah,0

即设置(al)=((ds*16)+(bx)),(ah)=0

汇编程序中数据不能以字母开头,所以要在前面加0

六、g命令可跳转执行代码,如:

-g 0012为执行到0012内存单元所对应的汇编程序,可用来跳转过多的loop循环

同时,当执行到loop命令时也可用p命令直接执行循环loop完毕

七、对于同一个汇编指令mov ax,[0]

在debug中为内存单元的移动

而源程序中将[idata]视为idata数据的移动

解决方法:

1.将偏移地址送入寄存器访问内存单元

mov ax,2000h

mov ds,ax

mov bx,0

mov al,[bx]

2.在[  ]前显示声明段地址所在段寄存器

mov ax,2000h

mov ds,ax

mov al,ds:[0]

八、用:

s:mov al,[bx]

mov ah,0

add dx,ax

inc bx

loop s

来不写新的命令,从而仅通过改变bx中的数值,改变指令访问的内存单元

九、DOS和其他合法的程序一般都不会使用0:200~0:2ff(00200h~002ffh)的256个空间

十、用

s:mov dl,[bx]

mov es:[bx],dl

inc bx

loop s

中使用es寄存器当类似ds寄存器,将两处内存单元的值复制,即是段前缀的使用

原文地址:https://www.cnblogs.com/msag/p/9912325.html

时间: 2024-10-27 16:28:40

汇编语言第五章总结的相关文章

汇编语言前五章总结

以下所有的总结基于我只学了前五章的前提下,可能会有错误 第一章:基础知识 在内存中把指令和数据区别开来:cs:ip指向的内存中的"数据"就是cpu认为的指令. 一个储存单元:2个16进制数字,8位,1个字节 cpu将系统中各类内存器看作一个逻辑内存器 第二章:寄存器 8086cpu的所有寄存器都是16位的 8086cpu中 1个字 = 2个字节 xx位cpu指的是:运算器一次处理的数据位数,寄存器位数,计算器与运算器之间通路的位数 8086有20位地址总线,用两个寄存器(段地址,偏移地

汇编语言:第五章 [BX]和loop指令

1.[bx]与内存单元 [bx]是指 段地址在DS中,偏移地址在bx中的内存单元 2.loop 用于描述循环 3.我们定义的描述性符号 "()" 寄存器: (ax/al)表示ax/al寄存器中的内容 段寄存器:   ((ds)*16+(bx))表示段地址为ds内容,偏移地址为bx内容的内存单元的内容 内存单元:   (20000H)表示20000H内存单元中的内容 4.约定符号idata表示常量 mov ax,idata 表示mov ax,1 mov ax,2 等 mov ax,[id

《大道至简》第五章读后感

失败的过程也是过程,我觉得这句话很有深意,阅读完大道至简第五章,我又有了很深的感触. 首先是“做过程不是做工程”,过程是为了实现某种目的而经历的一些事情,过程有很多种,虽然经历了某种过程,但不一定能实现某种功能.做完过程的每一个阶段,并不等于做工程.做过程不是做工程的精义,也不是最终目的. 然后是“做过场”,做过场就好像是一种形式一样,做了没必要做的事情,就是浪费时间. 做工程的最终目的是实现客户的要求,工程只是一种实现的途径.最初做开发的前辈们,不用什么工程或者过程,也一样编出了程序,也一样解

大道至简第五章读后感

第五章 失败的过程也是过程 今天照样老师带领着我们阅读了大道至简第五章,阅读了<大道至简>的第五章,这章在前面的基础上又进了一步,有了技术和团队,加上有效的沟通,接下来就要接项目做工程. “虚有其表耳”,本章以<明皇实录>中的一句话来告诉我们一个深刻的道理:不要只求外表,只做形象工程,而是要透过表象,力求实质. 失败了不要紧,没有失败也就找不到自己的不足,也就不会发现自己的问题,更不用谈改进了.我们的前辈们就是在不断的失败中才总结出了“瀑布模型”“螺旋模型”等模型,方便了我们.但是

第五章 电子星球

                   第五章         电子星球   山高高兮.路长长,岁月悠悠兮.转眼空.   镇楼竹: 1. 秀竹一枝自宛然, 莫愁风雨损华年. 几番颠扑呈贞骨, 露重霜寒节更坚. 2. 纤纤凤竹长漓边, 不共山花斗野妍. 时对清流摇倩影, 溪流常伴乐怡然. 3. 坚节何愁风雨多, 晴天朗日更婆娑. 生凉不荫趋炎客, 惹得骚人为咏歌.   咏经典物理.戏现代理论物理: 在山泉水洁如冰, 溅玉飞珠迸有声. 流入大江清浊混, 滔滔何日见澄明.     一.   批驳现代理论

深入浅出Zabbix 3.0 -- 第十五章 Zabbix 协议与API

今天是六.一儿童节,祝小朋友们节日快乐!发完此文就带我家小朋友出去玩耍了. 第十五章 Zabbix 协议与API 本章将介绍和开发相关的Zabbix协议和API的内容,通过对Zabbix协议和API的深入了解,你可以利用Zabbix协议编写客户端程序并将其嵌入的产品或系统中,并将数据发送到Zabbix server,这在无法安装Zabbixagent等程序的场景(例如专用的嵌入式系统)中非常有用.你也可以利用Zabbix API开发自己的业务系统,或灵活的与现有系统整合集成. 15.1 Zabb

Linux与云计算——第二阶段 第五章:存储Storage服务器架设—分布式存储Ceph

Linux与云计算--第二阶段Linux服务器架设 第五章:存储Storage服务器架设-分布式存储Ceph 1 Ceph 配置Ceph集群 Install Distributed File System "Ceph" to Configure Storage Cluster. For example on here, Configure Cluster with 1 admin Node and 3 Storage Node like follows. | +------------

第五章搭建S3C6410开发板的测试环境

第五章本章主要介绍开发板的调试环境的搭建,以及如何将Android系统安装开发板上. 开发板是开发和学习嵌入式技术的主要硬件设备. 尽管可以在PC上开发Linux驱动,然后重新编译成ARM构架的Linux驱动模块,但最终都是要在开发板上进行测试的. 开发板从技术上说与手机类似,包含显示器.键盘.Wi-Fi.蓝牙等模块.开发板可扩展的端口多,容易开发定制的硬件. 第一节S3V6410开发板简介 S3C6410是一款低功耗.高性价比的RISC处理器,它给予ARM11内核,可以广泛应用于移动电话和通用

第五章

第五章 搭建S3C6410开发板的测试环境 ARM构架的开发板可基于X86构架的PC 在CPU指令以及二进制格式上有所不同. 安装串口调试工具 minicon 使用OK6410开发板可以使用其他方法显示Linux驱动程序输出的调试信息.此为串口调试. OK6410开发板自带一个串口.通过串口线与PC连接,linux驱动在输出调试信息的同时,通过串口线将调试信息发送到PC上. 安装.配置和测试minicom: 1.lsmod | grep usbserial 2.apt-get install m