汇编语言(王爽)第五章

第五章 [BX]和loop指令

*Loop指令

格式:loop 标号

等同步骤:(1)(cx)=(cx)-1;(2)若(cx)!=0,跳转到标号位置继续执行。

*Debug的相关命令及说明

g命令:g 偏移地址;使得执行到cs:偏移地址处停止;

p命令:使Debug程序自动重复执行代码中的循环指令,直到(cx)=0为止。

用Debug中直接写入指令,[idata]可以表示((段地址)*16+idata)处的值;而如果在汇编源代码中[idata]会被编译器masm处理为idata这个数值。所以在汇编源代码中当使用立即数来表示偏移地址时,须加前缀以显式表明,比如:ds:[idata]。

*示例:计算ffff:0~ffff:b内存单元中数据的和,结果存储在dx中。

;1.每个内存单元里的数值是单字节类型,而dx是双字节寄存器
;2.总计12个内存单元的数据和最大为255*12<65535,不会产生溢出

assume cs:code

code segment
        mov ax,0ffffH
        mov ds,ax

        mov bx,0      ;存储目标位置偏移地址
        mov dx,0      ;初始化结果
        mov ah,0      ;设置中转数的高位

        mov cx,12
s:
        mov al,[bx]
        add dx,ax
        inc bx
        loop s

        mov ax,4c00H
        int 21H

code ends

end

*一段安全的空间:汇编学习过程中可以使用00200h~002ffh这段空间,总计256个字节。

原文地址:https://www.cnblogs.com/tsembrace/p/3251753.html