首页 > 代码库 > boss 关 1
boss 关 1
假如AX现在有一个数是123d ,要把它打印到屏幕上。
首先进行拆分。
123 除以 10 =12 余数为3
12 除以
10 =1 余数为2
1 除以 10 =0
余数为1
同样,把AX的内容不停的除以10,只需要3次,然后把每次的余数反向组合到一起,就是原来的数字。
再把这5个数字对应的Ascll输入到显存里面,屏幕上就看到了。
db=Declare Byte =字节= 8位
dw=Declare Word =字=2个字节=
16位
dd=Declare Double Word =2字=4个字节= 32位
dq=Declare Quad
Word =4字=8个字节 =64位
jmp
mov
add
div
16位 除以 8位
div 指令
div 8位寄存器
div 8位内存
被除数在AX中,商在AL中,余数在AH中。
mov ax,0x0005
mov cl,0x02
div
cl
AL=02,AH=0x1
mov ax,0x0005
mov byte[cs:0x0023],0x02
div
byte[cs:0x0023]
32位除以16位
div 指令
div 16位寄存器
div 16位内存
div
bx
被除数在DX:AX中,因为1个寄存器存不下,商在AX中,余数在DX中。
;CS:IP = 0x07c00
mov ax,0xb800
mov es,ax
mov dx,0
mov ax,123
add ax,456
mov cx,10
;dx:ax=0:123
div cx ;123 /10 dx:ax=1:12
mov
byte[numbers+0x07c00+0x00],dl
mov dx,0 ;dx:ax=0:12
div cx ;123 /10 dx:ax=1:12
mov byte[numbers+0x07c00+0x01],dl
mov
dx,0 ;dx:ax=0:12
div cx ;123 /10 dx:ax=1:12
mov byte[numbers+0x07c00+0x02],dl
mov
dx,0 ;dx:ax=0:12
mov al,[numbers+0x07c00+02]
add al,0x30
mov byte[es:0x00],al
mov
byte[es:0x01],0x07
mov al,[numbers+0x07c00+01]
add al,0x30
mov byte[es:0x02],al
mov
byte[es:0x03],0x07
mov al,[numbers+0x07c00+00]
add al,0x30 [0的 ascll]
mov byte[es:0x04],al
mov
byte[es:0x05],0x07 [黑体白字]
numbers: db 0,0,0
stop: jmp near stop
jmp near
stop
boss 关 1