assume cs:code
data segment
db 10 dup (0)
data ends
code segment
start : mov ax,4240H;F4240H=1000000
mov dx,0FH
mov cx,0AH
mov bx,data
mov ds,bx
mov si,0
call dtoc mov dh,8
mov dl,3
mov cl,2
call show_str mov ax,4c00h
int 21h
dtoc: push ax;子程序中使用的寄存器入栈
push bx
push cx
push dx
push di
push si mov di,0;计数器,记录余数的个数
s1: mov cx,10;除数
call divdw
inc di
add cx,30H;余数+30H转化为ASCII码
push cx
cmp dx,0
jne s1
cmp ax,0
jne s1 mov cx,di
p: pop ds:[si]
inc si
loop p
;由于show_str的需要,ds:di处的字符串以零作尾。
;mov byte ptr ds:[si],0这条语句有无皆可,因为最后一次入栈的时候高8位一定是零 pop si;子程序中使用的寄存器出栈
pop di
pop dx
pop cx
pop bx
pop ax
ret
show_str:
push ax;子程序中使用的寄存器入栈
push cx
push dx
push ds
push es
push si
push di mov al,160;计算行号和列号对应的显存地址
mov ah,0;不要忽略了
dec dh
mul dh
dec dl
add dl,dl
mov dh,0;不要忽略了
add ax,dx
mov di,ax mov dl,cl;由于下面的jcxz指令要用到cx,所以用dl保存cl的值 mov ax,0b800h
mov es,ax
s: mov al,ds:[si]
mov cl,al
mov ch,0
jcxz ok
mov es:[di],al
mov es:[di+1],dl;颜色属性被保存在dl中
inc si
add di,2
jmp short s
ok: pop di;子程序中使用的寄存器出栈
pop si
pop es
pop ds
pop dx
pop cx
pop ax
ret divdw: push bx;要用到的寄存器bx、di入栈,下面用它来暂存参数的值
push di;不要将ax,dx,cx入栈,因为程序的目的最终是要修改它们的值
mov bx,ax
mov ax,dx
mov dx,0
div cx;这一步做完以后,ax中为结果的高十六位,即int(H/N),dx中是rem(H/N)的值
mov di,ax
mov ax,bx
div cx;这一步做完以后,ax中为结果的低16位,dx中存储余数
mov cx,dx
mov dx,di pop di
pop bx
ret
code ends
end start

;子程序描述:

;名称:dtoc

;功能:将dword型数转变为表示十进制数的字符串,字符串以0为结尾符。

;参数:(ax)= dword型数据的低16位

;        (dx)= dword型数据的高16位

;        ds:si指向字符串的首地址

;返回:无

;应用举例:编程,将数据1000000以十进制的形式在屏幕的8行3列,用绿色显示出来。

;在显示时我们调用本次实验中的第一个子程序show_str和第二个子程序divdw

;思路类似实验10.3_数值显示



;总结:在实际编程中,程序的模块化是必不可少的。因为现实的问题比较复杂,对现实

;问题进行分析时,把它转化成相互联系、不同层次的子问题,是必须的解决方法。利用

;call和ret指令,我们可以用简捷的方法,实现多个相互联系、功能独立的子程序来解

;决一个复杂的问题。

;----摘自汇编语言_模块化程序设计

实验10.3_数值显示拓展_dword型数转变为表示十进制数的字符串的更多相关文章

  1. emWin(ucGui)数值显示例程 -【worldsing笔记】

    本例程下载:2.emWin5.26(ucGui)VS2008数字显示.zip   在emWin显示文本字符还是容易,我们也可以使用字符串和标准 C 库的函数来显示数值.然而,有时候这会是件困难的事.通 ...

  2. uCGUI的文字与数值显示方法

    uCGUI的数值显示非常的灵活方便,是制作LCD界面非常好的选择. 文字与数值显示的方法: 常用文本显示函数: void GUI_DispStringAt(const char GUI_FAR *s, ...

  3. Highcharts 饼图数值显示在图形上

    1.引用js文件 <script type="text/javascript" src="http://cdn.hcharts.cn/jquery/jquery-1 ...

  4. [Unity3D]Unity3D游戏开发之伤害数值显示

    大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei.众所周知,在RPG游戏策划中最为重要的一个环节是数值策划.数值策划是一个关于游戏平衡方面的概念 ...

  5. Python练习题 041:Project Euler 013:求和、取前10位数值

    本题来自 Project Euler 第13题:https://projecteuler.net/problem=13 # Project Euler: Problem 13: Large sum # ...

  6. FPGA中将十进制数在数码管中显示(verilog版)--二进制转换为BCD码

    这周有朋友问怎样在fpga中用数码管来显示一个十进制数,比如1000.每个数码管上显示一位十进制数.如果用高级语言来分离各位,只需要分别对该数做1000,100,10对应的取商和取余即可分离出千百十个 ...

  7. C语言程序读写文件(文件内存一个十进制数,每读一次数值加一)

    1.问题:C语言程序实现读写一个txt文件,txt文件中存储一个十进制数.每读一次该数值加一. 2.实现:新建一个文件夹,在该文件夹中建一个outputFileName.txt文件.内容是:1,再在该 ...

  8. ES6标准入门之数值的拓展解说

    ES6提供了二进制和八进制数值的新写法,分别用前缀0b(或0B)和0o(或0O)表示. 0b111110111 === 503                    // true 0o767 === ...

  9. vmware15pro安装ubuntu18.10时出现显示不全问题

    如果这个时候用网上的ALT+左键拖拽根本没有效果 所以这里提供另外一种方式 就是正常安装的时候发现分区部分显示不全 此时点击右上角的橙色小×:询问是否退出 我们点击退出:之后就会来到试用界面 到了这里 ...

随机推荐

  1. osal_start_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT,SBP_PERIODIC_EVT_PERIOD)的理解

    osal_start_timerEx(Lock_TaskID,SBP_START_DEVICE_EVT,SBP_PERIODIC_EVT_PERIOD)与osal_set_event(Music_Ta ...

  2. xenserver+starwind架构布署

    主机 CPU 和主板均需支持 INTER-VT/ AMD-VT ,主板默认可能没开  进BISO开启  下载最新的 xenserver ,授权注册一下 轻松得到授权文件 (鄙视一下VMWARE,看人家 ...

  3. [转]通过Mesos、Docker和Go,使用300行代码创建一个分布式系统

    http://www.csdn.net/article/2015-07-31/2825348 [编者按]时下,对于大部分IT玩家来说,Docker和Mesos都是熟悉和陌生的:熟悉在于这两个词无疑已成 ...

  4. NSQ部署

    一.      简介 NSQ主要有三个主要程序和一个Web服务程序: nsqd:是守护进程,接收,缓存,并投递消息给客户端 nsqlookupd:是一个守护进程,为消费者提供运行时发现服务,来查找指定 ...

  5. 大话数据结构(十二)java程序——KMP算法及改进的KMP算法实现

    1.朴素的模式匹配算法 朴素的模式匹配算法:就是对主串的每个字符作为子串开头,与要连接的字符串进行匹配.对主串做大循环,每个字符开头做T的长度的小循环,直到成功匹配或全部遍历完成为止. 又称BF算法 ...

  6. postgre去重复记录

    postgre去重复记录,主要用到row定位的一个系统表示 “ctid”,能查出纯净的不重复的记录,那要删掉重复值也就容易了,自己去折腾吧. 我所涉及的是得到不重复的记录,就一句话: select c ...

  7. windbg sos版本不匹配问题解决

    dumpheap 时提示: 0:105> !dumpheap -stat The garbage collector data structures are not in a valid sta ...

  8. Java高级之虚拟机加载机制

    本文来自http://blog.csdn.net/liuxian13183/ ,引用必须注明出处! 1.0版本:2016-05-21 SubClass!! 执行结果说明一个问题:子类调用父类变量的时候 ...

  9. HTML与CSS的关系

    1. HTML是网页内容的载体.内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字.图片.视频等. 2. CSS样式是表现.就像网页的外衣.比如,标题字体.颜色变化,或为标题加入背景图片. ...

  10. jsp 标签、 项目全路径引用${CTX}

    请根据自己的需要选择以下标签. <%@ taglib uri="/struts-tags" prefix="s"%><%@ taglib ur ...