使用条件跳转指令计算1+2+3+...+100
jmp start
data '1+2+3+...+100='
start:
mov ax, 0x07c0
mov ds, ax
mov ax, 0xb800
mov es, ax
mov si, data
mov di, 0
mov cx, start-data
print:
mov al, [si]
mov [es:di], al
inc di
mov [es:di], 0x07
inc di
inc si
loop print
xor ax, ax
mov cx, 1
sum:
add ax, cx
inc cx
cmp cx, 100
jle sum
jmp $
times 510-($-$$) db 0
db 0x55,0xaa
cmp指令和jle指令
- cmp 内存空间/寄存器,内存空间/寄存器/立即数
类似sub指令减法操作 但是不改变cmp的两个操作数 根据减法的结果设置CF/OF/SF/ZF/AF/PF标志位
- jle(jump if less or equal 小于等于)
用于有符号数的比较
ZF=1(两个数相同 相减结果为0)
等价代码
sum:
ax += cx
cx ++
if(cx <= 100)
{
goto sum
}