- UID
 - 65892
 
 注册时间2010-3-1
阅读权限50
最后登录1970-1-1
感悟天道 
   
 
 
 
TA的每日心情  | 慵懒 2024-12-4 10:07 | 
|---|
 
  签到天数: 444 天 [LV.9]以坛为家II  
 | 
 
 本帖最后由 sdnyzjzx 于 2010-12-27 21:57 编辑  
 
抛砖引玉,敬请指正! 
 
assume cs:code 
 
data segment 
 
        dw 100 dup (0) 
     j  dd 1024,1234567,238763,887766,345543,99990088 
data ends 
 
stack segment 
        dw 100 dup (0) 
stack ends 
 
code segment 
 
start:  mov ax,data 
        mov ds,ax 
        mov ax,stack 
        mov ss,ax 
        mov sp,200 
 
        mov bx,offset j                        ;要显示数据的偏移位置          
        mov si,0                                        ;保存数据转化为字符后偏移位置 
        mov di,0         
        mov cx,6                                   ;要转化数据的个数  
 
_main:         
        push cx 
        push bx 
        mov cx,0ah 
        mov ax,[bx] 
        mov dx,[bx+2] 
        call dtoc 
        mov bx,8*160                        ;第8行开始显示 
        add bx,di 
        call show_str 
        pop bx 
        pop cx 
        add bx,4 
        loop _main 
 
        mov ax,4c00h 
        int 21h 
 
dtoc:                 
_s0:            call divdw 
        cmp dx,0                                    ;商的高位是否为0 
        jnz _s1 
        cmp ax,0                                    ;商的低位是否为0 
        jnz _s1 
        add cx,30h 
        mov [si],cx 
        ret                                ;数据转化完成,返回 
_s1:                                        ;写入转化完成的数据为字符 
        add cx,30h 
        mov [si],cx 
        inc si 
        mov cx,0ah 
        jmp _s0 
 
show_str: 
         
        mov ax,0b800h 
        mov es,ax 
         
xianshi:  
        mov al,[si] 
        mov byte ptr es:[bx],al                            ;要显示的字符 
        mov byte ptr es:[bx+1],2                    ;要显示字符的颜色 
        cmp si,0 
        jz ok 
        dec si 
        add bx,2 
        jmp xianshi 
         
ok:            add di,20                                     ;显示字符宽度 
        ret 
      
divdw:        push si                                ;dword型数值除法运算 
        push di 
        mov si,ax                             ;save ax(L)t 
        mov ax,dx 
        mov dx,0 
        div cx                          ;(H/N) 
        mov di,dx                              ;save rem(H/N) 
        push di 
        mov dx,0                        ;int(H/N) 
        mov di,2 
        mul di 
        mov bx,32768                           ;int(H/N)*65536 
        mul bx 
        pop di 
        push ax                         ;save int(H/N)*65536 
        push dx 
        mov ax,di                        ;Load rem(H/N) 
        mov di,2 
        mul di 
        mul bx 
        add ax,si                        ;rem(H/N)*65536+L 
        div cx 
        mov si,ax 
        mov cx,dx 
        pop dx 
        pop ax 
        pop di 
        add ax,si 
        pop si 
        ret 
 
code ends 
end start 
 
 |   
 
评分
- 
查看全部评分
 
 
 
 
 
 |