码迷,mamicode.com
首页 > 其他好文 > 详细

boss 关 1

时间:2017-07-04 20:10:08      阅读:156      评论:0      收藏:0      [点我收藏+]

标签:body   组合   屏幕   需要   32位   tab   看到了   个数   strong   

 

假如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

标签:body   组合   屏幕   需要   32位   tab   看到了   个数   strong   

原文地址:http://www.cnblogs.com/xiaodaxiaonao/p/7117903.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!