汇编语言——王爽(02)
debug中跟踪用loop指令实现的循环====计算ffff:0006 单元中的数*3 ,结果存储在dx中
assume cs:code code segment mov ax,0ffffh ; 汇编程序中数据不能以字母开头 mov ds,ax mov bx,6 ;ds:bx 指向ffff:6 mov al,[bx] mov ah,0 ;设置(a1) = ((ds*16)+(bx)),(ah)=0 mov dx,0 ;累加器清零 mov cx,3 ;循环三次 s:add dx,ax loop s ;累加计算(ax)*3 mov ax,4c00h
int 21h ; 程序返回 code ends end
上面代码不能直接运行,带有中文输入法的TAB按键
调试过程:
1、masm p3.asm
2、link p3
3、debug p3.exe
4、t 单步运行
5、u 查看相应地址中的汇编指令
6、int21 指令要使用 P命令执行,才会显示最终结果
// 跳过程序 debug G
g + 要跳转的偏移地址,就可以对循环进行跟踪
遇到LOOP命令可以使用P命令跳出循环 同样可以使用 g+0016直接跳出
DOS 与 masm 编译器对------------------------mov al,[0];有这不同的解释
解决方法-----------------------mov al,ds:[0]或者 mov al,[bl]
loop 与 [bx]的联合应用
第6章 包含多个段的程序
指明程序入口:start ‘’‘’‘’‘’‘’end start
代码段中使用栈:实现逆序存放