汇编语言(王爽)第五章
第五章 [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个字节。