|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- [hide]assume cs:code,ds:data
- data segment
- dw 123,12666,1,8,3,38
- db 80 dup (0)
- db 0 ;ds:[96] ;字符总数计数
- db 0 ;ds:[98] ;除数变量 保存 值10
- db 0 ;ds:[100] ;用于记录录入数据的个数
- data ends
- code segment
- start: mov ax,data
- mov ds,ax
- mov bx,0
- call display_dig ?调用显示主函数
- mov ax,4c00h
- int 21h
- display_dig:
- call get_dig_count ;取得字数?
- mov cx,ds:[100]
- mov di,16
- mov bp,8
- mov word ptr ds:[96],0 ;记 数
- covent:push cx
- mov ax,ds:[bx]
- mov cx,5
- r_01:mov dx,10
- push dx
- pop ds:[98] ;除数
- mov dx,0
- div word ptr ds:[98]
- ; mov word ptr ds:[38],0
- push cx ;保存内层循环计数 下面cx有别的用途
- mov cl,dl
- jcxz null ;检测某位的余数是否为零
- add dl,30h
- mov byte ptr ds:[bp+di],dl
- jmp put_color
- null: mov byte ptr ds:[bp+di],0
- put_color: mov byte ptr ds:[bp+di+1],75h ;颜色值,如果某位中数值为零依然进行此操作
- pop cx
- add di,2 ;内存地址递增参数
- sub bp,4 ;每前进(由左至右)2字节后退4字节保存高位字符
- add word ptr ds:[96],1 ;每进行一位数操作,计数器+1
- loop r_01
- add di,6 ;空字符
- sub bp,4 ;空字符
- add bx,2
- add bp,20
- pop cx
- loop covent
- mov cx,ds:[96] ;所有待显示字符计数
- add cx,6 ;此处空字符需要各加两次运算
- mov ax,0b850h
- mov si,10h
- mov di,02h
- mov es,ax
- dp: mov ax,ds:[si]
- mov es:[di],ax ;显示
- add si,2
- add di,2
- loop dp
- ret
- get_dig_count:
- mov bx,0
- mov word ptr ds:[100],0
- get_data: mov cx,ds:[bx]
- jcxz is_0
- add word ptr ds:[100],1
- add bx,2
- jmp get_data
- is_0: mov bx,0
- ret
- code ends
- end start
- [/hide]
复制代码
|
|