用英文写太浪费时间了,而且书上的讲解对各种功能的英文原句少之又少,有空还是看龙书吧(不存在的)

实验1: 十六进制转换十进制

实验代码:

  1. ; 在屏幕上输出内存单元中的十进制两位数
  2. assume cs:code, ds:data
  3. data segment
  4. db 12
  5. db 1,2   ; 前一个字节用于保存商,后一个字节用于保存余数
  6. data ends
  7. code segment
  8. start:
  9. mov ax,data
  10. mov ds,ax       ; 补全指令,使得ds <-- data段地址
  11. mov ah,0
  12. mov al,ds:[0]   ; ax <-- data段字节单元的被除数12
  13. mov bl,10
  14. div bl
  15. mov  ds:[1],al    ; 补全代码,让商保存到data段注释中指定的单元
  16. mov  ds:[2],ah    ; 补全代码,让余数保存到data段注释中指定的单元
  17. mov ah,2
  18. mov dl,ds:[1]    ; 补全代码,使得dl <-- data段中保存的商的字节单元数值
  19. add dl,30h      ; 补全代码,使得dl中的数值转换为数字字符
  20. int 21h
  21. mov ah,2
  22. mov dl,ds:[2]     ; 补全代码,使得dl <-- data段中保存余数的字节单元数值
  23. add dl,30h       ; 补全代码,使得dl中的数值转换为数字字符
  24. int 21h
  25. mov ax,4c00h
  26. int 21h
  27. code ends
  28. end start

实验截图:

实验结果:

实验2:实验1升级版,要求将一串十六进制数转化为十进制数

  1. assume cs:code, ds:data
  2. data segment
  3. db 12,35,96,55,67
  4. data ends
  5. code segment
  6. start:
  7. ; 补全程序,参考t1.asm,综合应用以下知识完成:
  8. ; (1) loop指令、内存单元地址的灵活表示
  9. ; (2) div指令, 数字→数字字符的转换
  10. ; (3) int 21h的2号子功能,完成单个字符输出的方法,即:
  11. ;     mov ah,2
  12. ;     mov dl,待输出字符或其ASCⅡ码
  13. ;     int 21h
  14. ; (4) 数据和数据之间以空格间隔的实现: 使用(3)输出空格字符
  15. mov ax,data
  16. mov ds,ax
  17. mov si,0
  18. mov cx,5
  19. s:    mov ah,0
  20. mov al,ds:[si] ; ax <-- data段字节单元的被除数12
  21. mov bl,10
  22. div bl
  23. mov dl,al
  24. mov dh,ah
  25. mov ah,2
  26. add dl,30h
  27. int 21h
  28. add dh,30h
  29. mov ah,2
  30. mov dl,dh
  31. int 21h
  32. mov ah,2
  33. mov dl,' '
  34. int 21h
  35. inc si
  36. loop s
  37. mov ax,4c00h
  38. int 21h
  39. code ends
  40. end start

实验截图:

实验结果:

这里还是比较简单的,利用寄存器si每次加上1来进行转换到下一个十六进制数,利用一个循环就能解决问题,不过也可以利用栈的方法解决

实验3:书上实验9 根据材料编程

编程:在屏幕中间分别显示绿色、绿底红色、白底蓝色的字符串  'welcome to masm!'

实验代码:

  1. assume ds:data, cs:code
  2. data segment
  3. db 'welcome to masm!'
  4. db 2H,24H,71H
  5. data ends
  1. code segment
  2. start:  mov ax,data
  3. mov ds,ax            ;字符串及属性值所在段的段地址送入ds
  4. mov ax,0b800H
  5. mov es,ax            ;80×25彩色字符模式显示缓冲区段地址送入es
  1. mov bx,0   ; bx为ds的偏移地址
  2. mov si,0  ;si为es的偏移地址
  3. mov cx,16 ;循环16次
  4. s1:    mov al,ds:[bx]
  5. mov ah,ds:[10h]  ;第一种 2H
  6. mov word ptr es:[si],ax
  7. mov ah,ds:[11h]  ;第二种 24H
  8. mov word ptr es:[si+80],ax
  9. mov ah,ds:[12h]  ;第三种 71H
  10. mov word ptr es:[si+160],ax
  11. inc bx
  12. add si,2
  13. loop s1
  1. mov ax,4c00h
  2. int 21h
  3. code ends
  4. end start

实验结果:

然而??? 内存不够了吗。。。

??????

请孙锐同学帮一手

实验总结:
这次实验我们学习了:

Assembly Experiment9的更多相关文章

  1. 为C# as 类型转换及Assembly.LoadFrom埋坑!

    背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...

  2. ASP.NET Core: You must add a reference to assembly mscorlib, version=4.0.0.0

    ASP.NET Core 引用外部程序包的时候,有时会出现下面的错误: The type 'Object' is defined in an assembly that is not referenc ...

  3. An error occurred during the installation of assembly 'Microsoft.VC90.CRT……的问题

    有一段时间没有用到AnkhSvn了,今天工作需要安装了一下.结果安装到一半就无法继续了,提示An error occurred during the installation of assembly ...

  4. Beennan的内嵌汇编指导(译)Brennan's Guide to Inline Assembly

    注:写在前面,这是一篇翻译文章,本人的英文水平很有限,但内嵌汇编是学习操作系统不可少的知识,本人也常去查看这方面的内容,本文是在做mit的jos实验中的一篇关于内嵌汇编的介绍.关于常用的内嵌汇编(AT ...

  5. MAC上安装 HLA(High Level Assembly)

    1.安装HLA 最新版的hla汇编器可在这里下载,支持MacOs,Linux,Windows平台 2.安装步骤 将下载好的hla程序包放在Mac根目录下 最重要的一步是设置好环境变量,打开Mac根目录 ...

  6. .NET 程序集Assembly使用

    概述 一直以来,我们都在用C#编写程序,编写程序的时候,我们用到继承.多态.接口以及泛型,我们也都明白子类可以继承抽象类,并能够重写父类的抽象方法,可是大家是否想过,如下几个问题: 1.凡树必有根和叶 ...

  7. configuration error-could not load file or assembly crystaldecisions.reportappserver.clientdoc

    IIS启动网站后报错: configuration error Could not load file or assembly 'crystaldecisions.reportappserver.cl ...

  8. Could not load file or assembly 'Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its de

    页面加载时出现这个错误: Could not load file or assembly 'Microsoft.ReportViewer.WebForms, Version=10.0.0.0, Cul ...

  9. How to make your assembly more secure from referencing by unauthorized bits

    Now the security has a trend to become more and more important in our daily work, hence I did some r ...

随机推荐

  1. 浅谈java 之 Map

    先来一张Map的类继承图 Map :Hashtable .HashMap .LinkedHashMap .TreeMap 的比较   1.Hashtable的方法实现了synchronized 是线程 ...

  2. 从0到1用eclipse用maven搭建web项目

    1,默认已经搭建了JDK1.5以上,以及eclipseEE版本,和maven. 2,修改maven的本地仓库和镜像,修改本地仓库是为了方便我们管理,maven的默认仓库是在C盘的USER文件夹下,我一 ...

  3. BUAAOO第二单元总结之电梯问题

    ---恢复内容开始--- Homework1 傻瓜电梯 程序架构 第一次题目非常简单,思考也非常简单,一部电梯傻瓜调度.将命令入公共的队列,电梯从公共队列中取命令即可,其中只需要使用ArrayBloc ...

  4. Python之字符串方法

    def capitalize(self): # 第一个字符变大写 def center(self, width, fillchar=None): # 内容居中,两端可指定内容填充 def count( ...

  5. redis的特点

    一.Redis 特点 1.Redis 是一个基于内存的高性能key-value数据库, 2.Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,不像 memcached只 ...

  6. k-means缺陷

    k均值算法非常简单且使用广泛,但是存在的缺陷有: 1. K值需要预先给定: 属于预先知识,很多情况下K值的估计非常困难. 2. K-Means算法对初始选取的聚类中心点是敏感的: 不同的随机种子点得到 ...

  7. 更强大的python正则表达式模块 -- regex

    python内置的正则表达库re比较弱,而且似乎在好几年里都没太大的变化. 这里介绍这个python模块regex,实现了更多方便好用的功能. 比如:\p{han} 可以匹配汉字, \p{Latin} ...

  8. linux find命令-print0和xargs中-0使用技巧

    文章是转载的,原文很精彩,我对其中个别地方没有快速理解,我在此予以补充,方便后续回顾理解. 本文介绍了linux find命令中-print0和xargs中-0用法技巧,一些find命令的使用经验,需 ...

  9. 关于手机ios和安卓和pc的点击事件的兼容

    var u = navigator.userAgent, app = navigator.appVersion; var clickEvent; var isAndroid = u.indexOf(' ...

  10. Arm11-mini6410入坑

    Mini6410 学习Stm32的时候原子哥的资料真全啊,而且原子哥在他论坛也解答问题.然而现在学习ARM买了一套友善之臂的开发板,官方的资料只能刚好入门而已,其实入门都算不上.看了一下,网上的资料很 ...