汇编语言:第五章 [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,[idata]  表示mov ax,[1]   mov ax,[2]   等

段寄存机不可用这种方式mov

5.1[BX]

mov ax,[bx]  把ds内容作为段地址,bx内容作为偏移地址的2个内存单元内容放到ax中

mov [bx],ax  把ax内容放到ds内容作为段地址,bx内容作为偏移地址的2个内存单元中

5.2 loop指令

格式: loop 标号

loop执行步骤:1.(cx)=(cx)-1   2.判断cx,不是0则转到标号位置执行

例:计算2的12次方

assume cs:code

code segment

mov ax,2

mov cx,11

s:add ax,ax

loop s

code ends

end

5.3用debug跟踪loop指令

debug 1.exe

-r

-t

-t

..

-p (int 21H用p执行)

1.如果想直接跳到CS:XX位置处执行用 -g XX

2.如果想在循环中跳出,即结束循环后停下等待-t,  使用-p命令

5.4 Debug和汇编编译器对指令的不同处理

  同一指令:

  mov ax,[0] 在debug中表示把DS:0和DS:1的内存单元内容放到ax中

        在masm中等于  mob ax,0

  如何解决汇编源程序问题 :

  1. mov bx,0     mov ax,[bx]

  2. mov ax,DS:[0]

5.5 Loop和[bx]的联合应用

时间: 2024-08-10 18:40:32

汇编语言:第五章 [BX]和loop指令的相关文章

王爽《汇编语言》第三版 第五章 [BX]和loop指令

5.1 [bx] mov ax,[bx]功能:bx 中存放的数据作为一个偏移地址EA ,段地址SA 默认在ds 中,将SA:EA处的数据送入ax中. 5.2 Loop指令 指令的格式是:loop 标号,CPU 执行loop指令的时候,要进行两步操作: 1.(cx)=(cx)-1: 2.判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行. 通常我们用loop指令来实现循环功能,cx 中存放循环次数. 5.3 在Debug中跟踪用loop指令实现的循环程序 5.4 Debug和汇编编译器

汇编语言学习第五章-[BX]和loop指令

本博文系列参考自<<汇编语言>>第三版,作者:王爽 1.[bx]和内存单元的描述 [bx]与我们前面见过的[0]类似,mov ax,[0] 的意思是将内存地址为DS:0的两字节内容存入ax中.其中[0]中的0代表的是偏移地址. 类似的,我们有 mov al,[0]的意思是将内存地址为DS:0的单字节内容存入al中.那么我们可以大胆的推断mov ax,[bx]代表的是将偏移地址为bx寄存器中的值的内存地址的两字节内容存入到ax中,其段地址在DS中存储. 2.关于定义的描述性符号: &

‘第五章 [BX]和loop指令

<1>[BX] 想要完整地描述一个内存单元,需要两种信息:(1)内存单元的地址(2)内存单元的长度(类型).[BX]和[0]有些相似,表示一个内存单元,它的偏移地址在bx中.指令mov ax,[bx]的功能为将bx中存放的数据作为一个偏移地址EA,段地址SA默认在ds中,将SA:EA处的数据送入ax中,即(ax)=((ds)*16+(bx)).ps:此处的()表示的为括号内寄存器或者内存单元的内容. <2>Loop指令 loop在英语中有循环的含义,所以这个指令应该和循环有关.lo

第五章 [bx]和loop指令

要完整描述一个内存单元,需要两种信息:1.内存单元的地址:2.内存单元的长度(类型). 用[0]表示一个内存单元时,0代表单元的偏移地址,段地址默认在ds中,单元的长度(类型)可以由具体指令中的其他操作对象(比如寄存器)指出. 我们定义描述性符号:"()",为了描述上的简洁,在以后的课程中,我们将用一个描述性的符号"()"来表示一个寄存器或一个内存单元中的内容. .Loop指令 其中cx是四个通用寄存器之一. 第一次读的时候没仔细研究,执行loop s,确实是先cx

汇编语言(王爽) 第5章[BX]和loop指令

mov ax,[0] 把一个内存单元给寄存器ax,内存单元长度2个字节,偏移地址0,段地址ds mov al,[0] 把一个内存单元给寄存器al,内存单元长度1个字节,偏移地址0,段地址ds so:要描述一个内存单元,需要1.ds和偏移地址2.内存单元长度 [bx]也表示一个内存单元,偏移地址在寄存器bx中罢了 我们用()表示一个寄存器或一个内存单元中的内容 ()中可以是寄存器,段寄存器,内存单元的物理地址 5.1 [bx] mov ax,[bx] 把段寄存器ds和偏移地址在bx中的内存单元的内

《汇编语言》总结02 —— [BX] 和 loop 指令

[BX]和[0]有些类似,[0]表示内存单元,它的偏移地址是0,同样[BX]也表示一个内存单元,它的偏移地址在BX中. loop,英文单词"loop"有循环的含义,显然这个指令和循环有关. 我们约定符号idata表示常量,这里有一点需要注意的是不能将一个idata数据直接送入段寄存器中,这是非法操作,我们可以通过将idata数据先暂时放到通用寄存器中,然后再将通用寄存器中的数据mov到段寄存器中. Debug和汇编编译器masm对指令不同处理: Debug会将[idata]理解为偏移地

汇编入门学习笔记 (四)—— [BX] 和 loop指令

疯狂的暑假学习之  汇编入门学习笔记 (四)-- [BX]  和 loop指令 参考:<汇编语言> 王爽 第5章 1.[BX] mov al,[1] 在debug中,会把bs:1 中数据赋给al,但在在masm中不会把bs:1 中数据赋给al,而是把 [1] 认为是 1 赋给al. 如果要实现在debug中的mov al,[1],在masm中就需要[bx] 如: mov bx,1 mov al,[bx] 还可以用 bs:[1] 的方式 如: mov al,bs:[1] 2.loop 循环 要使

汇编语言第五章总结

两种指令[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 ((s

[bx]和loop指令

1.[bx]的含义 [bx]表示一个内存单元,它的偏移地址在bx中,比如:mov ax,[bx]会将一个内存单元的内容送入ax,这个内存单元的长度是2个字节,存放一个字,偏移地址存放在bx中,段地址在ds中.mov al,[bx]则是移动半个字. 2.loop指令 loop 标号 CPU执行loop指令的时候分两步: 1.(cx)=(cx)-1 2.判定cx中的值,不为零则转至标号出执行程序,如果为0则向下执行. 从上面的描述中,我们可以看到,cx中的值影响着loop指令的执行效果.通常我们lo