1. 显示字符串

  第一次写出来的代码发现只能用作特定问题,如果其他程序调用子程序将会出错.后面的题目也就无法完成.所以重新写了一遍,进入后子程序中使用的寄存器全部入栈

 1 assume cs:code
 2
 3 data segment
 4     db 'Welcometomasm!',0
 5 data ends
 6
 7 stack segment
 8     db 16 dup (0)
 9 stack ends
10
11 code segment
12     start:
13         mov dh,8
14         mov dl,3    ;第八行第三列
15
16         mov cl,2    ;颜色
17
18         mov ax,data
19         mov ds,ax    ;ds指向数据段
20
21         mov si,0
22         call show_str
23
24     all:
25         jmp short all    ;一直循环
26
27         mov ax,4c00h
28         int 21h
29
30     show_str:
31         push dx
32         push ax
33         push cx        ;子程序开始前入栈
34         push si
35
36         mov ax,0b800h
37         mov es,ax    ;es指向现存的起始地址
38
39         mov al,160    ;一行可现实80个字符,每个字符2字节.160字节
40         dec dh        ;行-1
41         mul dh        ;乘,结果在ax中
42         mov bx,ax
43         ;(n行-1)*160=n行开头的偏移地址
44
45         mov al,2    ;一个字符占2列
46         dec dl        ;列-1
47         mul dl
48         mov di,ax    ;列的偏移地址
49         ;(n列-1)*2=当前列的偏移地址
50
51         ;颜色设置
52         mov ch,0
53         mov dx,cx
54     s:
55         mov cl,[si]    ;ds:[si]指向字符串的首地址
56         mov ch,0
57         jcxz ok
58         mov ax,[si]
59         mov es:[bx+di],ax
60         mov es:[bx+di+1],dx
61         ;一个字母占两个字节,一个ascii
62         add di,2
63         inc si
64         jmp short s
65
66     ok:
67         pop si
68         pop cx
69         pop ax
70         pop dx
71         ret
72
73 code ends
74 end start

  图片显示:

3. 数值显示

  

  1 assume cs:code
  2 data segment
  3     dw 16 dup (0)
  4 data ends
  5
  6 code segment
  7 start:
  8     mov bx,data    ;指向数据段
  9     mov ds,bx
 10
 11     mov si,0
 12     mov ax,12345
 13     call dtoc
 14
 15     mov dh,3
 16     mov dl,3
 17     mov cl,2
 18     call show_str
 19
 20     ;一直循环
 21 all:
 22     jmp short all
 23
 24     mov ax,4c00h
 25     int 21h
 26
 27 dtoc:
 28     push ax
 29     push cx
 30     push bx
 31     push si
 32     push di        ;备份
 33
 34     mov bx,10
 35     mov di,0    ;记录循环的次数
 36
 37     ;循环s用来
 38     sd:
 39         mov dx,0
 40         div bx
 41         add dx,30h
 42
 43         push dx    ;用栈存储然后出栈调整顺序
 44         inc di
 45         mov cx,ax    ;ax为商,商为0结束
 46
 47         jcxz okd
 48
 49     jmp short sd
 50     okd:
 51
 52         mov cx,di
 53     sd1:
 54         pop ax
 55         mov [si],al    ;将值传入 ds:[si]
 56         inc si
 57     loop sd1
 58
 59         pop di
 60         pop si
 61         pop bx
 62         pop cx
 63         pop ax
 64         ret
 65
 66     ; 字符展示子程序
 67     show_str:
 68         push ax
 69         push bx
 70         push cx        ;子程序开始前入栈
 71         push di
 72         push si
 73
 74         mov ax,0b800h
 75         mov es,ax    ;es指向显存的起始地址
 76
 77         mov al,160    ;一行可现实80个字符,每个字符2字节.160字节
 78         dec dh        ;行-1
 79         mul dh        ;乘,结果在ax中
 80         mov bx,ax
 81         ;(n行-1)*160=n行开头的偏移地址
 82
 83         mov al,2    ;一个字符占2列
 84         dec dl        ;列-1
 85         mul dl
 86         mov di,ax    ;列的偏移地址
 87         ;(n列-1)*2=当前列的偏移地址
 88
 89         ;颜色设置
 90         mov ch,0
 91         mov dx,cx
 92     s_show:
 93         mov cl,[si]    ;ds:[si]指向字符串的首地址
 94         mov ch,0
 95
 96         jcxz ok_show
 97
 98         mov ax,[si]
 99         mov es:[bx+di],ax
100         mov es:[bx+di+1],dx    ;颜色设置
101         ;一个字母占两个字节,一个ascii
102         add di,2
103         inc si
104         jmp short s_show
105
106     ok_show:
107         pop si
108         pop di
109         pop cx
110         pop bx
111         pop ax    ;出栈
112         ret
113
114 code ends
115 end start

转载于:https://www.cnblogs.com/Triomphe/p/8545461.html

王爽 汇编 实验10相关推荐

  1. 王爽汇编语言 实验10

    1.显示字符串 解: assume cs:code data segment db 'Welcome to masm!',0 data endscode segment start:mov dh,8m ...

  2. 王爽汇编语言实验10

    显示字符串 写完后结果出错,检查了几遍也没发现逻辑错误,用debug逐步调试后才发现有些寄存器中的值没有初始化就拿来直接用了,影响了后面的计算,造成结果的错误. assume cs:code,ds:d ...

  3. 8086汇编学习小记-王爽汇编语言实验12

    8086汇编学习小记-王爽汇编语言实验12 0号中断处理程序,开始安装在0000:0200处的程序最后用死循环导致显示不出'divided error',改成直接退出就正常显示了.注意修改ss,sp之 ...

  4. 【汇编语言 王爽】实验14代码

    实验需求如下: 编程,以"年/月/日 时:分:秒"的格式显示时间 注意:CMOS RAM中储存着系统的配置信息,除了保存时间信息的单元外,不要向其他单元写入内容,否则将引起一些系统 ...

  5. 汇编语言(王爽)实验十 编写子程序

    标 题: 汇编实验10-- 编写子程序 作 者: XHS_12302 时 间: 2016_7_28 16:56 实验10编写子程序 在这次实验中,我们将要编写3个子程序,通过它们来认识几个常见的问题和 ...

  6. 【王爽汇编】实验9 根据材料编程

    前言:这是王爽版汇编语言第四版第187页的一道题目,因为我觉得有点难,非常有借鉴意义,所以我打算写一篇博客,顺便把题目再写一遍,这样也许会看的更仔细.我会在题目的中间加上自己的思考和分析,因为对于初学 ...

  7. 王爽 汇编语言 实验七

    最近在看王爽老师的汇编语言,写的确实很好,简单易懂,引人入胜!相比较我们学校一些老师的书籍,那简直是··· 惨绝人寰 先说一下思路: 题目的简单表述就是:将一个段的内容复制到另一个段,不过要排列成固定 ...

  8. 【汇编语言】(王爽)实验4解答

    题目1 编程:向内存0:200 - 0:23F 中存放数据 0 - 3FH ; 向内存 0:200 ~ 0:23f 写入数据0~3fH[字节型数据] assume cs:code code segme ...

  9. 汇编 王爽老师实验三,查看psp区

    源程序:assume cs:codesg codesg segment     mov ax,2000h     mov ss,ax     mov sp,0     add sp,10     po ...

最新文章

  1. 什么是视觉Visual SLAM
  2. 1-4 多文档界面处理(3)
  3. VC++下使用md5函数
  4. python 进程理论基础
  5. HBNIS-crypto
  6. 收藏!这些 IDE 使用技巧,你都知道吗
  7. hdu 3666 THE MATRIX PROBLEM 差分约束系统
  8. caffe 初学参考链接
  9. Css3之基础-5 Css 背景、渐变属性
  10. 稳定性测试怎么测_心理测试:选择你喜爱的一种食物,测你2020年的运势怎么样...
  11. 张朝阳:社交是互联网的中原 做「狐友」是要逐鹿中原
  12. java销毁servlet_「销毁session」Servlet销毁session - seo实验室
  13. 乔治城大学计算机专业,美国乔治城大学计算机
  14. 135端口入侵个人电脑
  15. Docker硬盘空间使用分析与清理
  16. 逆转三国攻略-各阶段关卡武将
  17. 云呐-fsu动环监控单元,fsu动环监控单元是什么
  18. Axure谷歌浏览器扩展程序下载及安装方法(免翻墙)
  19. css特殊边框形状_了解CSS边框角形状
  20. 贝叶斯学派:先验分布、后验分布、共轭分布、共轭先验分布

热门文章

  1. 计算机系统基础期中考试,计算机系统基础第二次作业.docx
  2. 英朗gt仪表盘图标说明_BuildRun低代码开发教程八节 | 图表和仪表盘展示
  3. 【阿里云课程】注意力机制原理,应用与设计
  4. 【每周NLP论文推荐】从预训练模型掌握NLP的基本发展脉络
  5. MNA-CNN: 如何在美学质量评估中储存照片原始信息
  6. 全球及中国食品供应区块链行业运行形势及未来投资规模建议报告2021年版
  7. 中国组合聚醚市场十四五发展规划与未来竞争趋势分析报告2022-2028年版
  8. systemparametersinfo详细
  9. std:: string 的常用使用
  10. openresty开发系列18--lua的字符串string操作