当前位置: 首页 > news >正文

汇编语言王爽第四版17.3完程可运行可调试

汇编语言王爽第四版17.3节完整程序,可调试,可运行。

最基本的字符串输入程序,具备以下功能:
1、在输入的同时需要显示这个字符串;
2、输入回车符后,一个字符串的输入结束;
3、能够删除已经输入的字符。

完整程序代码如下,可运行,可调试:

assume cs:code,ds:datadata segmentkeys db 256 dup(0)data endscode segmentstart:mov ax,datamov ds,axmov dh,10
s:	mov si,offset keysmov di,simov dl,12call getStrinc dhcmp byte ptr [di],'q'jne scmp byte ptr [di+1],0je exitjmp s
exit:mov ax,4c00hint 21hgetStr:push ax
getStrLoop:mov ah,0int 16hcmp al,20hjb getStrCtrlmov ah,0call charStackmov ah,2call charStackjmp getStrLoop
getStrCtrl:cmp ah,0ehje getStrBackcmp ah,1chje getStrEnterjmp getStrLoop
getStrBack:mov ah,1call charStackmov ah,2call charStackjmp getStrLoop
getStrEnter:mov al,0mov ah,0call charStackmov ah,2call charStackmov ah,3call charStackpop axretcharStack:
; 功能:字符栈的入栈、出栈和显示
; 参数:(ah)=功能号,0表示入栈,1表示出栈,2表示显示, 3表示初始化
; 		ds:si指向字符栈空间
;		对于0号功能:(al)=入栈字符
; 		对于1号功能:(al)=返回的字符
; 		对于2号功能:(dh)、(dl)=字符串在屏幕上显示的行、列位置。jmp short charStarttable 	dw	charPush, charPop, charShow, charInittop		dw	0		;栈顶
charStart:push bxpush dxpush dipush escmp ah,3ja charRetmov bl,ahmov bh,0add bx,bxjmp word ptr table[bx]charPush:mov bx,topmov [si][bx],alinc topjmp charRetcharPop:cmp top,0jbe charRetdec topmov bx,topmov al,[si][bx]jmp charRetcharShow:mov bx,0b800hmov es,bxmov al,160mul dhmov di,axadd dl,dlmov dh,0add di,dxmov bx,0
charLoop:cmp bx,topjne charNextmov byte ptr es:[di],' 'jmp charRet
charNext:mov al,[si][bx]	mov es:[di],almov byte ptr es:[di+1],2mov byte ptr es:[di+2],' 'inc bxadd di,2jmp charLoop
charInit:mov top,0charRet:pop espop dipop dxpop bxret code endsend start

编译、运行:

C:\>masm pg02;
C:\>link pg02;
C:\>pg02
C:\>

界面操作:

1、输入的字符串将在屏幕10行12列位置显示;
2、可以用退格键删除末尾的字符;
3、回车键结束当前字符串;
4、从下一行开始进行下一个字符串的输入;
5、输入:q<CR>,即字符'q'+回车键,就可以退出程序。

运行效果如下图所示
汇编语言王爽第四版17.3完程

(全文完)

http://www.lryc.cn/news/207897.html

相关文章:

  • CH9329芯片应用—简介
  • mysql查看插入记录与查看mysql实时查询和插入速度
  • 如何在VScode中让printf输出中文
  • qt hiRedis封装使用
  • 整理指定文件夹下的所有文件,以类树状图显示并生成对应超链接
  • 解密代理技术:保障隐私与网络安全
  • k8s中,“deployment”充当什么角色?有什么功能?
  • 深度学习:激活函数曲线总结
  • Elasticsearch-06-Elasticsearch Java API Client
  • 计算机网络第3章-运输层(2)
  • 【微信小程序】实现投票功能(附源码)
  • Pytorch入门实例的分解写法
  • Google单元测试sample分析(一)
  • requests 实践
  • UI设计公司成长日记2:修身及持之以恒不断学习是要务
  • 辅助驾驶功能开发-功能规范篇(23)-2-Mobileye NOP功能规范
  • React中如何提高组件的渲染效率
  • springboot+mybatis3.5.2动态查询某一字段在某一段时间内的统计信息(折线图)
  • 关于本地项目上传到gitee的详细流程
  • MarkDown详细入门笔记
  • 算法——贪心算法
  • 102.linux5.15.198 编译 firefly-rk3399(1)
  • 易点易动固定资产管理系统:多种盘点方式助力年终固定资产盘点
  • C# Winform编程(10)Chart图表控件
  • 群狼调研(长沙产品概念测试)|如何做新品上市满意度调研
  • Lua与C++交互
  • Ubuntu安装pyenv,配置虚拟环境
  • 【分布式技术专题】「分布式技术架构」MySQL数据同步到Elasticsearch之N种方案解析,实现高效数据同步
  • 什么是React中的高阶组件(Higher Order Component,HOC)?它的作用是什么?
  • NEFU离散数学实验3-递推方程