`
coolerbaosi
  • 浏览: 725156 次
文章分类
社区版块
存档分类
最新评论

王爽《汇编语言》第10章 实验10 编写子程序

 
阅读更多
花了三个多小时写出来的东西,真费劲。。。接下来就是本书的两个课程设计之一。
assume cs:code

data segment
  db 'Welcome to masm!',0
data ends

numberdata segment
  dw 123,12666,1,8,3,38
numberdata ends

code segment
start:
  ;测试显示函数
  mov dh,8
  mov dl,3
  mov cl,2
  mov ax,data
  mov ds,ax
  mov si,0
  call show_str
  
  ;测试除法
  mov ax,0FFFFH
  mov dx,0FFFFH
  mov cx,0FH
  call divdw
  
  ;测试数据转字符
  mov ax,data
  mov ds,ax
  mov si,0
  mov ax,numberdata
  mov es,ax
  mov ax,es:[0]
  call dtoc
  
  mov ax,4c00h
  int 21h

dtoc: ;功能:将word型数据转变为表示十进制数的字符串,字符串以0为结尾符
      ;参数:(ax)=word型数据
      ;      ds:si指向字符串首地址 (‘0’:30H,‘9’:39H) 
      push bx
      push cx
      push si
        
      mov dx,0
    k:  
      mov cx,ax
      jcxz r
      mov cx,10     
      call divdw
      mov bx,30H
      add bx,cx
      mov ds:[si],bx
      inc si
      loop k
    r:
      pop si
      pop cx
      pop bx  
      ret
      
      
divdw: ;功能:进行不会产生溢出的除法运算,被除数为dword型
       ;      除数为word型,结果为dword型
       ;参数:(ax)=dword型数据的低16位
       ;      (dx)=dword型数据的高16位
       ;      (cx)=除数
       ;返回:(dx)=结果的高16位,(ax)=结果的低16位,(cx)=余数
       push bx
       push dx
       push di
       push si
       ;先算00ax/cx商si余数di,再算00dx/cx商bx余数为dx,然后算dxdi/cx余数dx      
       mov bx,dx
       mov dx,0
       div cx
       mov di,dx;余数最大为cx-1
       mov si,ax;商最大为 0000 FFFF
       
       mov ax,bx
       mov dx,0
       div cx   ; bx00/cx
       mov bx,ax;商最大为 0000 FFFF
                ;余数dx最大为 cx-1
       
       mov ax,di
       div cx   ; dxdi/cx  
       add si,ax;商最大为 0000 FFFF, si不可能溢出
       
       mov cx,dx
       mov dx,bx
       mov ax,si
       
       pop si
       pop di
       pop dx
       pop bx
       ret
  

show_str: ;功能: 在指定的位置,用指定的颜色,
          ;       显示一个用0结束的字符串
          ;参数: (dh)=行号(0~24),(dl)=列号(0~79),
          ;       (cl)=颜色,ds:si字符串首地址
          ;返回:无
        push ax
        push bx
        push cx
        push dx
        push es
        push si
        
        ;确定输出第一个偏移位置bx
        mov ax,0B800H
        mov es,ax
        mov al,dh
        mov ah,160
        mul ah
        mov dh,0
        add ax,dx
        add ax,dx
        mov bx,ax
      
        mov ah,cl ;颜色保存在高位
        mov ch,0
        
      s:  
        mov cl,ds:[si]
        jcxz ok 
        mov al,cl
        mov es:[bx],ax
        add bx,2
        inc si
        jmp short s
      ok:
        pop si
        pop es
        pop dx
        pop cx
        pop bx
        pop ax
        ret
  
code ends
end start

分享到:
评论

相关推荐

    60道关于Redis的常见面试题.pdf

    - 1. 什么是 Redis?它的主要特点是什么? - 2. Redis 支持哪些数据结构?请详细描述每种数据结构的用途和特点。 - 3. 什么是缓存穿透?在使用 Redis 时,如何防止缓存穿透? - 4. 介绍 Redis 的持久化机制以及对比它们之间的区别。 - 5. 如何实现 Redis 的分布式锁?你了解的分布式锁有哪些实现方式? - 6. Redis 的数据淘汰策略有哪些?分别是如何工作的? - 7. 什么是 Redis 事务?它是如何实现的?与传统数据库事务有何不同? - 8. 如何设置 Redis 的主从复制?主从复制有什么优势和限制? - 9. Redis 支持的数据结构中,有哪些可以实现计数功能?请详细说明其使用场景。 - 10. 什么是 Redis Sentinel?它的作用是什么?如何配置和使用 Sentinel?

    2024年社交媒体广告行业分析报告.pptx

    2024年社交媒体广告行业分析报告.pptx

    网站界面设计mortal0418代码

    网站界面设计mortal0418代码

    2024年休闲椅行业分析报告.pptx

    2024年休闲椅行业分析报告.pptx

    anaconda3 -windows安装的

    anaconda3 -windows安装的

    华为客户关系管理策略解析glz.pptx

    华为客户关系管理策略解析glz.pptx

    asp.net基于三层模式实验室仪器设备管理系统源码.7z

    实验室设备仪器管理系统基于MVC思想和三层设计模式构建,前台采用bootstrap响应式框架,后台运用div+css技术,确保用户界面的友好与兼容性。在Visual Studio 2010或更高版本软件上进行程序开发,利用sqlserver2005或更先进的数据库系统提供稳定的数据支持。 该系统包含四个核心模块:实验室登陆模块、学生模块、教师模块和管理员模块。登陆模块提供用户注册和登陆功能,确保用户信息的准确与安全。学生模块提供实验课仪器设备的信息查询、借领仪器耗材、设备事故的登记等服务,满足学生在实验过程中的各种需求。 管理员模块功能丰富,包括实验室设备信息查询、设备事故记录、设备资料管理、设备损坏管理以及设备耗材借领等。管理员可以方便地查询和统计设备仪器信息,上报和处理设备事故,更新设备操作指南,管理设备损坏信息,以及处理设备耗材的借领和归还。 实验设备管理数据库是系统的核心部分,管理员可以添加、删除、更改设备信息,记录报废、维修、申请购买以及新增设备的详细信息。所有相关信息如报废表、维修表、设备购买申请表、新增设备属性表等都会在终端实时显示,确保信息的及时性和准确性。 此

    java练习题2.txt

    java练习题

    国产达梦数据库DM88.1.1.45下载链接,Linux-rh7-64位版本.zip

    国产达梦数据库DM88.1.1.45下载链接,Linux-rh7-64位版本.zip

    物联网嵌入式ESP32开发例程18-FreeRTOS操作系统之任务通知模拟事件标志组C程序代码.rar

    1、嵌入式物联网ESP32项目实战开发。例程经过精心编写,简单好用。 2、代码使用Visual Studio Code + ESP-IDF开发,C语言编程。例程在ESP32-S3上运行。若在其他型号上运行,请自行调整。 3、如果接入其他传感器,请查看发布的其他资料。 4、ESP32与模块的接线,在代码当中均有定义,请自行对照。 5、若硬件差异,请根据自身情况适当调整代码,程序仅供参考。 6、代码有注释说明,请耐心阅读。 7、技术v:349014857;

    工作汇报 年终总结2.pptx

    引言 年度工作回顾 系统进展与亮点 技术创新与应用 市场反馈与用户评价 存在问题与挑战 未来展望与计划 结束语与感谢 一、引言 简要介绍智能家居系统的重要性和发展趋势 回顾本年度的工作目标和重点 二、年度工作回顾 系统建设与维护 完成的项目与里程碑 系统稳定性与可靠性提升 团队建设与培训 团队成员构成与职责 培训与技能提升活动 合作伙伴与资源整合 与供应商、合作伙伴的合作情况 资源整合与利用 三、系统进展与亮点 功能扩展与优化 新增功能介绍与效果评估 现有功能的优化与改进 用户体验提升 界面设计与交互优化 用户反馈与改进措施 四、技术创新与应用 物联网技术的应用 传感器与通信技术的升级 大数据分析与应用 智能家居的智能化管理 自动化控制与节能策略 安全防护与预警系统 五、市场反馈与用户评价 市场反馈分析 市场需求与竞争态势 市场占有率与增长趋势 用户评价总结 用户满意度调查结果

    基于ssm+vue开发的web新闻流媒体平台源码数据库文档.zip

    基于ssm+vue开发的web新闻流媒体平台源码数据库文档.zip

    哈夫曼树与哈夫曼编码介绍.zip

    哈夫曼树与哈夫曼编码

    2024年千里明贴膏行业分析报告.pptx

    行业分析报告

    java练习题9.txt

    java练习题

    stm32c8t6超声波标准库开发 stm32c8t6超声波测距.zip

    stm32c8t6超声波标准库开发 stm32c8t6超声波测距

    学生成绩管理系统 C# 毕业设计项目用C#语言写的学生成绩管理系统, 代码有参考和学习价值, 可

    学生成绩管理系统 C# 毕业设计项目用C#语言写的学生成绩管理系统, 代码有参考和学习价值, 可用于期末项目, 以及毕业设计项目 !

    excel函数公式大全

    excel函数公式大全

    基于stm32的智能小车(遥控控制、避障、循迹)stm32f103系列单片机

    基于stm32的智能小车(遥控控制、避障、循迹)stm32f103系列单片机控制智能小车,具有三种控制方式,遥控控制、避障、循迹(内含三个工程,分别对应三种控制方式).zip

    基于Java的高校教师绩效考核系统的设计与实现【附源码】.zip

    基于Java的高校教师绩效考核系统的设计与实现【附源码】.zip

Global site tag (gtag.js) - Google Analytics