环境:nasm,virtualbox
代码如下:
start_:
xor ax,ax
mov cx,100
@f:
add ax,cx
loop @f
mov bx,0xb800
mov ds,bx
mov di,2000
cmp ax,0 ;cmp看作减法指令
jz s0
mov bx,10
s: ;ax不为零,则执行此处的代码
mov dx,0 ;dx存被除数高位,ax存被除数低位
div bx ;ax保存商,dx保存余数
mov cx,ax ;商非零,则循环进行
add dl,48 ;dl的ASCII码
mov dh,2 ;dl字符的属性
mov [di],dx
dec di
dec di
inc cx
loop s
jmp end_
s0: ;ax为0,则执行此处的代码
mov dl,48 ;dl的ASCII码
mov dh,1 ;dl字符的属性
mov [di],dx
inc di
inc di
end_:
db 510-(end_-start_) dup(0) ;或者times number db 0
db 0x55,0xAA
结果如下:


本文详细介绍了使用NASM汇编语言在VirtualBox虚拟机环境中创建一个简单的计数器程序,通过减法和除法操作演示了十进制数值的处理,并展示了如何将结果转换为ASCII字符并显示在指定内存地址。着重讲解了条件转移和循环结构的应用。

515

被折叠的 条评论
为什么被折叠?



