寄存器的汇编输出

时间:2015-11-22 11:15:32

标签: assembly x86

如何获得内容的输出: 如果我们假设CX = 5,则AX = 0,DX = 10,BX = 0

一个。

Not CX

Cmp CX,DX

JL jump1

Mov BX,1

Jmp skip1

Jump1:

Mov ax,10

Skip1:

Ret 

以十六进制执行:ax =? BX =? ,CX =?

Org 100h

Mov CX,9

Mov AL,2H

Camp AL,05H

JB label1

Sub AL,03H

Jmp exit 

Label1:

Mov CX,3

Exit:

Ret 

以十六进制执行:AL =?  ,CX =?

下进行。

Org 100h

Mov BX,20H

Mov AL,0FFH  ;CF=0

Add AL,1

JC label1

Mov BX,6

Label1:

Mov BX,7

Exit:

Ret

以十六进制执行:AL =? BX =?

请有人解释一下

2 个答案:

答案 0 :(得分:2)

以表格形式写下来,然后填写空白:

            AX=0    BX=0    CX=5    DX=10
-----------------------------------------
Not CX      0       0       -6      10     Not inverses the bits of CX

Cmp CX,DX   0       0       -6      10     -6 is less than 10 ...

JL jump1    0       0       -6      10     ... so this jump is taken!

Mov BX,1

Jmp skip1

Jump1:

Mov ax,10

Skip1:

沿着这些列表向下,然后以十六进制的形式写下结果。

如果某些个别指示让您烦恼,请向我们询问。

答案 1 :(得分:0)

Bochs对于模拟很有用。

如何使用:

  1. 汇总已调整的来源并添加一些符号以与NASM一起运行。
  2. 代码:

    bits 16
    head:
    
    not cx
    cmp cx, ax
    jl jump1
    mov bx, 1
    jmp skip1
    jump1:
    mov ax, 10
    skip1:
    ret
    
    ; to make this image bootable
    times 510-($-head) db 0
    db 0x55
    db 0xaa
    
    1. Lanuch Bochs。使用启用调试的版本,例如bochsdbg-win64.exe
    2. 设置Disk & Boot设置如下(其他标签是默认值): disk setting for bochs
      First floppy image/device应为步骤1中汇编的图像。
    3. ROM BIOS image设置中正确设置VGA BIOS imageMemory。 如果文件BIOS-bochs-latestVGABIOS-lgpl-latest位于工作目录中,只需输入它们(删除(null)/
    4. Start按钮开始模拟。
    5. 输入lb 0x7c00(在线性地址0x7c00处设置断点),然后c(继续)到控制台以跳过BIOS初始化,并在用户代码的开头跳转并停止。
    6. 使用set命令设置寄存器的值。
    7. 说:

      set cx = 5
      set ax = 0
      set dx = 10
      set bx = 0
      
      1. reg命令可用于查看寄存器的值 s命令可用于执行一条指令 用它们来观察程序的作用。
      2. 第一个程序的示例结果:
        result for the first program