[019][汇编语言]计算 ffff:0006 内存单元中的数乘以3,结果存储在dx中

计算 ffff:0006 内存单元中的数乘以3,结果存储在dx中

汇编源程序中,数据不能以字母开头

9138H 可以直接写 9138H
A000H 必须写成 0A000H

编译 连接 跟踪

  • masm
  • link
  • debug

p3.asm 循环3次

assume cs:code
code segment
    mov ax,0ffffH
    mov ds,ax
    mov bx,6

    mov al,[bx]
    mov ah,0

    mov dx,0

    mov cx,3
    s:  add dx,ax
        loop s

        mov ax,4c00H
        int 21H
code ends
end
[019][汇编语言]计算 ffff:0006 内存单元中的数乘以3,结果存储在dx中_第1张图片
p3.asm p3.obj p3.exe

内存单元 字节型8位数据 传递到 16位寄存器AX

        mov al,[bx]
    mov ah,0

  • 8位自然填不满16位,那就填到低8位,并让多余的高8位填上
    [019][汇编语言]计算 ffff:0006 内存单元中的数乘以3,结果存储在dx中_第2张图片
    内存单元 字节型8位数据 传递到 16位寄存器AX

Loop指令的作用

  • loop 0012H 会将IP寄存器设置为0012H 使得CS: IP指向 ADD dx,ax
[019][汇编语言]计算 ffff:0006 内存单元中的数乘以3,结果存储在dx中_第3张图片
loop 0012H 会将IP设置为0012H 使得CS IP指向 ADD dx,ax.png

p4.asm 循环123次

...
    mov cx,123
... 
[019][汇编语言]计算 ffff:0006 内存单元中的数乘以3,结果存储在dx中_第4张图片
p4.asm p4.obj p4.exe
  • 执行命令g 0012,那么 CS:0012前的程序段被执行

    [019][汇编语言]计算 ffff:0006 内存单元中的数乘以3,结果存储在dx中_第5张图片
    执行命令 g 0012,那么 CS:0012前的程序段被执行.png

  • 再次遇到loop指令时,使用p命令来执行,debug就会自动重复执行循环中的指令 知道(cx)=0为止

  • 如图,一定是遇到loop指令,遇到ADD指令时用p命令是没有效果的

  • 也可以使用g 命令直接跳到这一条指令

[019][汇编语言]计算 ffff:0006 内存单元中的数乘以3,结果存储在dx中_第6张图片
再次遇到loop指令时,使用p命令来执行,debug就会自动重复执行循环中的指令 知道(cx)=0为止.png

你可能感兴趣的:([019][汇编语言]计算 ffff:0006 内存单元中的数乘以3,结果存储在dx中)