标签:命令 代码 模式 联合 重点 偏移地址 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