如何获得内容的输出: 如果我们假设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 =?
请有人解释一下
答案 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对于模拟很有用。
代码:
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
bochsdbg-win64.exe
。Disk & Boot
设置如下(其他标签是默认值):
First floppy image/device
应为步骤1中汇编的图像。ROM BIOS image
设置中正确设置VGA BIOS image
和Memory
。
如果文件BIOS-bochs-latest
和VGABIOS-lgpl-latest
位于工作目录中,只需输入它们(删除(null)/
)Start
按钮开始模拟。lb 0x7c00
(在线性地址0x7c00
处设置断点),然后c
(继续)到控制台以跳过BIOS初始化,并在用户代码的开头跳转并停止。set
命令设置寄存器的值。说:
set cx = 5
set ax = 0
set dx = 10
set bx = 0