实验十 3.数值显示(以下程序附带测试程序)

 ;名称: dtoc
;功能: 将dword型数据转变为表示十进制数的字符串,字符串以0为结尾
;参数: (ax)=dword型数据低字
; (dx)=dword型数据高字
; ds:si指向字符串的首地址
;返回: 无
assume cs:code
data segment
haha dd
tata dd dup(?)
data ends
code segment
main:
mov ax,data
mov ds,ax
mov si,offset haha
mov ax,[si]
add si,
mov dx,[si]
mov si,offset tata
call dtoc
mov dh,
mov dl,
mov cl,
mov si,offset tata
call show_str
mov ax,4c00h
int 21h dtoc:
push bx
push cx
push si
mov bx, ;bx 用于记录最终的位数
r:
mov cx,
call divdw
push cx ;计算余数,商,余数保存入栈
inc bx ;位数增加 cmp dx,
jnz next
cmp ax,
jz ok ;商为0,则跳出r循环
next:
jmp r
ok: mov cx,bx
s: pop ax
add al,30h
mov [si],al
inc si
loop s
mov byte ptr [si],
pop cx
pop bx
pop si
ret divdw:
push bx
mov bx,ax
mov ax,dx
mov dx,
div cx
push ax ;将int(H/N)入栈
mov ax,bx
div cx ;[rem(H/N)*65536+L]/N结果商放在dx中,余数放在ax中
mov cx,dx
pop dx
pop bx
ret show_str:
push cx
push bx
push ax
push dx
push ds
push es
push di ;将要使用到的寄存器入栈 mov ax,0b800h
mov es,ax
mov al,
mul dh
mov bx,ax ;基址赋值
mov al,
mul dl
mov di,ax ;变址赋值 read:
mov ch,[si]
cmp ch,
jz ok2 ;判断是否遇到字符串尾端 mov ah,cl
mov al,[si]
mov es:[bx+di],ax
inc di
inc di ;指向下一个屏幕显示位置
inc si ;指向下一个字符
jmp read
ok2:
pop di
pop es
pop ds
pop dx
pop ax
pop bx
pop cx ;使用到的寄存器出栈
ret code ends
end main

王爽<汇编语言>实验十的更多相关文章

  1. 王爽<<汇编语言>> 实验十四

    ;以"年/月/日 时:分:秒"的格式, 显示当前的日期, 时间 assume cs:code code segment main: out 70h,al ;告诉CMOS RAM将要 ...

  2. 王爽< 汇编语言>实验十二

    ;此乃安装程序 ;功能:将8086cpu中断类型码为0 的中断向量设置为我们编写的中断服务程序入口地址 ;该中断在除法发送溢出的时候产生 assume cs:code code segment mai ...

  3. 王爽<汇编语言>实验十一 (附测试代码)

    ;名称: letterc ;功能: 将以0为结尾的字符串中的小写字母转变成大写字母 ;参数: ds:si指向字符串首地址 assume cs:code data segment db data end ...

  4. 王爽汇编语言(第三版)环境搭建(附PDF及工具下载)

    一.前言 最近在学习汇编语言,使用的是读者评价非常高的王爽老师写的<汇编语言>(第三版),为了适应现在各个版本的windows操作系统,所以采用VMWare虚拟机来搭建纯DOS环境. 二. ...

  5. 201671010438王奕晗实验十四 团队项目评审&课程学习总结

    个人学习总结博客 项目 内容 这个作业属于哪个课程 任课教师博客主页链接 这个作业的要求在哪里 作业链接地址 作业学习目标 完成个人软件心得总结 一.结合本学期课程学习内容,对比<实验一 软件工 ...

  6. 王爽-汇编语言-综合研究四-不使用main函数编程

    (一) 研究目的 使用C语言编程,我们一定要使用main函数么? (二) 研究过程 1) 最初的程序 首先,我们编写一个不写main函数的C语言程序. 程序如下: 在编译的过程中,没有发现错误.在链接 ...

  7. 王爽-汇编语言-综合研究一-搭建简易C环境

    (一) 学习过程: 整个过程分为两个部分: 第一:将TC2.0的环境使用虚拟软盘复制到DOS虚拟机中: 打开WinImage,fileànew,由于TC2.0的环境解压后为2.02M,所以我们在Sta ...

  8. 关于《汇编语言(王爽)》程序6.3使用16个dw 0的问题

    在学习王爽老师<汇编语言>的第6.2节时,在程序6.3代码中,给出了如下的代码: assume cs:code code segment dw 0123h, 0456h, 0789h, 0 ...

  9. Linux下学习王爽老师的汇编语言

    坐起来非常容易,找到这条路确实非常曲折,为了后来的同志们不再纠结,特记录如下: 这几天看汇编语言时,很多人都推荐王爽老师的<汇编语言>,老师的书的确写的很好,但是讲的是ms的汇编,但是总不 ...

随机推荐

  1. javafx之登陆界面的跳转

    界面布局用到的是fxml而非纯java代码,工具是javafx sence builder 账号:account 密码:password 登陆成功: 可以点击退出登陆返回到登陆页面 工程目录: pac ...

  2. shared_ptr和多线程

    前一篇文章写得实在太挫,重新来一篇. 多线程环境下生命周期的管理 多线程环境下,跨线程对象的生命周期管理会有什么挑战?我们拿生产者消费者模型来讨论这个问题. 实现一个简单的用于生产者消费者模型的队列 ...

  3. 内存对齐 和 sizeof小结

    数据对齐(内存对齐)指该数据所在的地址必须是该数据长度的整数倍.X86CPU能直接访问对齐的数据,当它试图访问未对齐的数据时,会在内部进行一系列的调整,降低运行速度.数据对齐一般出现在结构体和类中,在 ...

  4. Python学习路程CMDB

    本节内容 浅谈ITIL CMDB介绍 Django自定义用户认证 Restful 规范 资产管理功能开发 浅谈ITIL TIL即IT基础架构库(Information Technology Infra ...

  5. ArcMap计算PolyLine中点VBA

    Dim pGeo As IGeometrySet pGeo = [Shape]Dim pPolyline As IPolylineSet pPolyline = pGeoDim pCurve As I ...

  6. window.onload() 和 $(function(){})

    再使用 $(function(){})的时候,发现一直取不到元素.但是换成window.onload()则可以取到. 大概推测是页面加载问题,于是把js从header移到了footer,发现 $(fu ...

  7. 【笔记】Fragment使用

    1.静态加载 1.1 首先定义每一个Fragment的布局文件. 1.2 创建每个fragment类,需要继承Fragment.并使用onCreateView()的inflater.inflate() ...

  8. Linux内核启动过程start_kernel分析

    虽然题目是start_kernel分析,但是由于我在ubuntu环境下配置实验环境遇到了一些问题,我觉得有必要把这些问题及其解决办法写下来. 首先我使用的是Ubuntu14.04 amx64,以下的步 ...

  9. Cosh.2

    没壳 直接拖 一开始  字符长度不对.   所以  输入都超过5   就没什么问题了 发现下面的跳转都是跳到eorr的 那不跳的条件呢 看来他们必须要相等.单步跟踪就会发现eax指向的是我们的Seri ...

  10. Unity 3D 基础知识方法

    A. 组件中默认的方法有如下:            Awake,Start,Update,OnGUI,OnDisable,OnEnable,OnDestory,LateUpdate,FixedUpd ...