效果如图:

assume cs:codeparameters_stack segment ;程序断点参数传递db 48 dup(0)
parameters_stack endsraw_stack segment ;程序断点保存db 48 dup(0)
raw_stack endsalpha segmentdb 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ;0~25db 'abcdefghijklmnopqrstuvwxyz' ;26~51db 'HI, WELCOME TO MASM!      ' ;52~77db 'I AM Cncdre FROM CHINA.   ' ;78~103db 'HOW ARE YOU?              ' ;104~129
alpha endscode segmentMain:;参数传递mov ax,parameters_stackmov ss,axmov sp,32mov ax,26push ax ;字符串长度mov ax,200hpush ax ;高地址为字符属性,低地址为0mov ax,52push ax ;待显示字符所在偏移地址mov ax,alphapush ax ;待显示字符所在段mov ax,2000push ax ;显存偏移地址mov ax,0b800hpush ax ;显存起始段地址mov ss:[1],sp ;parameters_stack最高地址存储此时栈顶位置;断点保存mov ax,raw_stack ;call指令会自动压入程序断点地址(ip,短转移)mov ss,axmov sp,32call Sub0mov ax,4c00hint 21hSub0:;小程序0_字符打印;参数压栈顺序:;字符串长度->高地址为字符属性,低地址为0->待显示字符所在偏移地址;->待显示字符所在段->显存偏移地址->显存起始段地址;最后在ss:[1]存入sppush axpush espush dipush dspush sipush cxmov ss:[1],sp ;raw_stack最高地址存储此时栈顶位置mov ax,parameters_stackmov ss,axmov sp,ss:[1] ;parameters_stack最高地址读取栈顶位置pop axmov es,ax ;显存起始段地址pop di    ;显存偏移地址pop ds    ;待显示字符所在段pop si    ;待显示字符所在偏移地址pop ax    ;低地址为0,高地址为字符属性pop cx    ;字符串长度s:mov al,ds:[bx+si]mov es:[di],almov es:[di+1],ahinc siinc diinc diloop smov ax,raw_stackmov ss,axmov sp,ss:[1] ;raw_stack最高地址读取栈顶位置pop cxpop sipop dspop dipop espop axret ;ret指令会自动弹出程序断点地址赋给ip(短转移)code ends
end Main

8086汇编-实验10-字符打印程序相关推荐

  1. 8086汇编-实验9-字符打印

    环境:DosBox 0.74-3,masm 效果如图: assume cs:codestack segmentdb 16 dup(0) stack endsalpha segment ;+26db ' ...

  2. 8086汇编实验(十题可用)

    一.前言 1.这学期学8086汇编,所做的四次实验十个题目(前8手写,后2摘录后修改,时间久远未找到原文链接,愿理解),亲测可用,码住,希望能对将来的读者有所帮助. 2.有的需要在debug中根据段地 ...

  3. 汇编实验:屏幕窗口程序(代码有较为详细的注释)

    实验3.4 屏幕窗口程序 1.题目:屏幕窗口程序 2.实验要求: 在屏幕上开出三个窗口,它们的行列坐标按照教材要求.光标首先定位在右窗口最下面一行的行首(15,50),如从键盘输入字符,则显示在右窗口 ...

  4. 汇编实验 分类统计字符个数(debug中查看统计结果)

    2.3 分类统计字符个数 1.题目:分类统计字符个数 2.实验要求: 程序接收用户键入的一行字符(字符个数不超过80个,该字符串用回车符结束),并按字母,数字及其他字符分类计数,然后将结果存入以let ...

  5. 汇编实验:屏幕窗口程序

    实验3.4  屏幕窗口程序 1.题目:屏幕窗口程序 2.实验要求: 在屏幕上开出三个窗口,它们的行列坐标按照教材要求.光标首先定位在右窗口最下面一行的行首(15,50),如从键盘输入字符,则显示在右窗 ...

  6. 王爽 汇编 实验10

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

  7. 8086汇编-实验8-jmp指令的理解

    offset 标号:取标号处的地址 mov 16位 offset 标号:取标号偏移地址 mov 32位 offset 标号:取标号段地址:偏移地址 assume cs:code code segmen ...

  8. 8086汇编-实验4-[bx]和loop的使用

    结果如下: 代码如下: code segment assume cs:code start:mov ax,0hmov ds,ax ;段地址初始化mov bx,200hmov di,0h ;偏移地址初始 ...

  9. 8086汇编-实验3-编程、编译、链接、跟踪

    汇编程序编写: assume cs:code code segmentmov ax,2000hmov ss,axmov sp,0add sp,10pop axpop bxpush axpush bxp ...

最新文章

  1. python 三分钟入门_Cython 三分钟入门教程
  2. win服务器是如何发展到现在的?
  3. 1-2、算法设计常用思想之贪婪法
  4. [实用]DNS解析命令,静静地学会【转载】
  5. Qt::Window 独立窗口
  6. 如何在bootstrap轮播中调整图像大小
  7. Keil5的仿真调试
  8. idea建springcloud项目_idea创建springcloud项目图文教程(EurekaServer注册中心)
  9. mobomarket android,MoboMarket
  10. 资管新规 2018年4月27日
  11. 做微信公众号淘宝客返利系统必须要知道3件事儿
  12. 设计师必备,6个PNG素材网站
  13. KP26--输入成本中心的标准作业量(活动类型价格)
  14. 记录下SPADE(GauGan)的学习心得
  15. 洛谷 P1049 装箱问题
  16. Java代码安装maven jar_Java中Maven项目导出jar包配置的示例代码
  17. 同义词,反义词(antonym,synonym)的英文表达理解
  18. nodeJS与npx之间的三两事
  19. 【千律】C++基础:删除只读属性文件、文件剪切、修改文件扩展名
  20. 《设计模式》之观察者模式

热门文章

  1. JavaScript中对象成员的可见性
  2. vue依赖缓存_Vue SSR服务端渲染之数据缓存
  3. 网站开发之MyEclipse简单实现JSP网页表单提交及传递值
  4. 【数据结构与算法】之深入解析“插入区间”的求解思路与算法示例
  5. 【数据结构与算法】之深入解析“组合总和II”的求解思路与算法示例
  6. MySQL之深入解析一条SQL的执行流程
  7. 2019第十届蓝桥杯C/C++ A组省赛 —— 第三题: 最大降雨量
  8. GitLab私服搭建及使用实践
  9. Java面向对象(六)接口
  10. JAVA基本数据类型、数据类型转换