码迷,mamicode.com
首页 > 其他好文 > 详细

第五章

时间:2018-11-25 20:25:14      阅读:152      评论:0      收藏:0      [点我收藏+]

标签:命令   代码   模式   联合   重点   偏移地址   deb   其他   add   

5.1,2

mov ax,[bx]表示将偏移地址和段地址分别在BX,DS的内存单元的内容放入ax中。

inc bx含义为bx内容加一。

loop指令格式:

    mov cx,11  (cx存储循环次数,每次循环后-1,为0时转到loop s后继续执行指令)

s:   add ax,ax    (循环执行的程序段)

    loop s    【效果相当于(ax)的12次方。】

 

5.3 在debug中跟踪用loop指令实现的循环程序:P103

重点:图5.8

可用g命令直接跟踪循环。

g 0012  意思为执行代码段到当前代码段的0012h处(段地址在cs中)

当希望将循环一次执行完时,用P命令完成,具体:遇到loop指令时,用p命令Debug自动重复执行循环的指令直到(cx)=0.

 

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

mov al,[0]  debug认为【0】为内存单元的偏移地址;masm解释为0。

解决:

mov ax,2000h

mov ds,ax     

mov bx,0      将内存单元地址赋给bx

mov al,[bx]   

或在内存地址单元的偏移地址前加上段地址所在寄存器如:

mov ax,2000h

mov ds,ax     

mov al,ds:0  --------(ds就是5.6中的段前缀)

 

5.5 loop,bx联合运用

  mov ax,0ffffh

  mov ds,ax

  mov bx,0  ds:bx指向ffff:0

 

  mov dx,0    (累加寄存器)

 

  mov cx,12

s:  mov al,[bx]

  mov ah,0

  add dx,ax

  inc bx (bx)每次循环加一 

  loop s 

5.6参上

5.7

8086模式中,随意向一段内存地址写入内容很危险(可能存放重要的系统数据或代码),如果我们需要向内存空间写入数据时要使用操作系统分配的空间。(可以在操作系统下安全,规矩地编程,也可以自由地用汇编语言操作硬件)

DOS模式下,0:200~0:2ff没有系统或其他程序的数据或代码,我们可以使用这段空间。

5.8

参见P121程序5.9

 

 

   

 

第五章

标签:命令   代码   模式   联合   重点   偏移地址   deb   其他   add   

原文地址:https://www.cnblogs.com/101whw/p/10015859.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!