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

news2024/9/30 13:15:25

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

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

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

assume cs:code,ds:data

data segment

	keys db 256 dup(0)

data ends

code segment

start:
	mov ax,data
	mov ds,ax
	mov dh,10
s:	
	mov si,offset keys
	mov di,si
	mov dl,12
	call getStr
	inc dh
	cmp byte ptr [di],'q'
	jne s
	cmp byte ptr [di+1],0
	je exit
	jmp s
exit:
	mov ax,4c00h
	int 21h
		
getStr:
	push ax
getStrLoop:
	mov ah,0
	int 16h
	cmp al,20h
	jb getStrCtrl
	mov ah,0
	call charStack
	mov ah,2
	call charStack
	jmp getStrLoop
getStrCtrl:
	cmp ah,0eh
	je getStrBack
	cmp ah,1ch
	je getStrEnter
	jmp getStrLoop
getStrBack:
	mov ah,1
	call charStack
	mov ah,2
	call charStack
	jmp getStrLoop
getStrEnter:
	mov al,0
	mov ah,0
	call charStack
	mov ah,2
	call charStack
	mov ah,3
	call charStack
	pop ax
	ret

charStack:
; 功能:字符栈的入栈、出栈和显示
; 参数:(ah)=功能号,0表示入栈,1表示出栈,2表示显示, 3表示初始化
; 		ds:si指向字符栈空间
;		对于0号功能:(al)=入栈字符
; 		对于1号功能:(al)=返回的字符
; 		对于2号功能:(dh)、(dl)=字符串在屏幕上显示的行、列位置。
	jmp short charStart
	table 	dw	charPush, charPop, charShow, charInit
	top		dw	0		;栈顶
charStart:
	push bx
	push dx
	push di
	push es
	
	cmp ah,3
	ja charRet
	mov bl,ah
	mov bh,0
	add bx,bx
	jmp word ptr table[bx]

charPush:
	mov bx,top
	mov [si][bx],al
	inc top
	jmp charRet

charPop:
	cmp top,0
	jbe charRet
	dec top
	mov bx,top
	mov al,[si][bx]
	jmp charRet

charShow:
	mov bx,0b800h
	mov es,bx
	mov al,160
	mul dh
	mov di,ax
	add dl,dl
	mov dh,0
	add di,dx

	mov bx,0
charLoop:
	cmp bx,top
	jne charNext
	mov byte ptr es:[di],' '
	jmp charRet
charNext:
	mov al,[si][bx]	
	mov es:[di],al
	mov byte ptr es:[di+1],2
	mov byte ptr es:[di+2],' '
	inc bx
	add di,2
	jmp charLoop
charInit:
	mov top,0

charRet:
	pop es
	pop di
	pop dx
	pop bx
	ret 

code ends

end start

编译、运行:

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

界面操作:

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

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

(全文完)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1139925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

增速4755%!撬动海外美妆市场,赛盈分销洞察美国市场年终布局方向!

2020年国货美妆扎堆出海&#xff0c;行业增速23%&#xff0c;市场增长翻了10倍&#xff0c;也是从这一年开始&#xff0c;国货美妆真正进入了“大航海时代”。 从埃森哲的数据报告里看到&#xff0c;今年全球美妆市场整体规模已超6000亿美元&#xff0c;若按照每年10%的增幅增长…

2023-10-21 美团2024秋招后端开发岗笔试题

1 考察dfs和拓扑排序 1.1 题目描述&#xff08;如果拓扑排序不清楚可以去做一下lc 207. 课程表&#xff09; 1.2 答案 import java.util.*;public class Meituan {static int m,n;public static void main(String[] args) {Scanner in new Scanner(System.in);m in.nextInt…

微服务治理之道:构建可伸缩和高可用的系统

文章目录 什么是微服务治理&#xff1f;1. 服务发现和注册2. 负载均衡3. 容错处理4. 安全5. 日志和监控6. 版本管理 构建可伸缩的微服务系统1. 水平扩展2. 使用负载均衡3. 自动化扩展4. 异步通信5. 缓存 构建高可用的微服务系统1. 容错设计2. 多区域部署3. 自动故障转移4. 数据…

环境变量的秘密武器:让您的命令行效率倍增(环境变量图文详解)

Linux中的环境变量&#xff08;图文详解&#xff09; 1. 基本概念2. 常见环境变量PATH : 指定命令的搜索路径HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)SHELL : 当前Shell,它的值通常是/bin/bash 3. 查看环境变量方法4. 测试PATH5. HOME6. 和环境变量…

众和策略可靠吗?股票有杠杆吗?

可靠 在投资股票时&#xff0c;人们常常听到“杠杆”这个概念。可是&#xff0c;股票有杠杆吗&#xff1f;这个问题并不完全是是非两色的&#xff0c;需求从多个视点来看待。 从理论上讲&#xff0c;股票不是一个有杠杆的财物类别。杠杆是一种金融东西&#xff0c;能够使投资…

【解决AWS上死机问题】

状况&#xff1a;每天手动重启AWS的机器&#xff0c;如果不重启&#xff0c; 网站打不开。 发现死机原因为内存用完了&#xff0c; 这也是我后面安装软件时才发现的 检查内存 free 检查谁用了内存 ps aux|head -1;ps aux|grep -v PID|sort -rn -k 4|head 检查发现使用内存的都…

【每日一题】1465. 切割后面积最大的蛋糕-2023.10.27

题目&#xff1a; 1465. 切割后面积最大的蛋糕 矩形蛋糕的高度为 h 且宽度为 w&#xff0c;给你两个整数数组 horizontalCuts 和 verticalCuts&#xff0c;其中&#xff1a; horizontalCuts[i] 是从矩形蛋糕顶部到第 i 个水平切口的距离verticalCuts[j] 是从矩形蛋糕的左侧到…

LeetCode 1465. 切割后面积最大的蛋糕:纵横分别处理

【LetMeFly】1465.切割后面积最大的蛋糕&#xff1a;纵横分别处理 力扣题目链接&#xff1a;https://leetcode.cn/problems/maximum-area-of-a-piece-of-cake-after-horizontal-and-vertical-cuts/ 矩形蛋糕的高度为 h 且宽度为 w&#xff0c;给你两个整数数组 horizontalCut…

LeetCode209——长度最小的子数组

LeetCode209——长度最小的子数组 题目描述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数…

【LeetCode:1465. 切割后面积最大的蛋糕 | 贪心 + 排序】

&#x1f680; 算法题 &#x1f680; &#x1f332; 算法刷题专栏 | 面试必备算法 | 面试高频算法 &#x1f340; &#x1f332; 越难的东西,越要努力坚持&#xff0c;因为它具有很高的价值&#xff0c;算法就是这样✨ &#x1f332; 作者简介&#xff1a;硕风和炜&#xff0c;…

高校打造动捕实训室:开启元宇宙创新教育时代

随着科技的发展&#xff0c;高校教育面临着新的挑战与机遇。高校动捕实训室涉及多个学科领域&#xff0c;如艺术学院、设计学院、新媒体学院等&#xff0c;适用于动画、视觉传达、数码媒体、数字媒体艺术等专业。动捕实训室可以为学生提供创意发挥的空间&#xff0c;使用动捕设…

【文末送书】GPT如何赋能软件研发全流程

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab&#xff0c;机器人运动控制、多机器人协作&#xff0c;智能优化算法&#xff0c;滤波估计、多传感器信息融合&#xff0c;机器学习&#xff0c;人工智能等相关领域的知识和技术。关…

Typora(morkdown编辑器)的安装包和安装教程

Typora&#xff08;morkdown编辑器&#xff09;的安装包和安装教程 下载安装1、覆盖文件2、输入序列号①打开 typora &#xff0c;点击“输入序列号”&#xff1a;②邮箱一栏中任意填写&#xff08;但须保证邮箱地址格式正确&#xff09;&#xff0c;输入序列号&#xff0c;点击…

Web3 治理实践探讨:如何寻找多元化发展路径?

Web3 领域变革正崭露头角&#xff0c;而社区治理开始成为行业热议话题。Web3 项目如何探寻多元化建设的解困路径&#xff0c;究竟是治理模型的精进成为首要问题&#xff0c;还是吸纳更多资金与组织教育培训&#xff0c;让开发者成为项目建设的中坚力量&#xff1f;本期 TinTinW…

聚量推客滴滴学生认证app地推网推拉新升级啦

“聚量推客”滴滴学生认证项目升级 滴滴学生认证升级后分为微信推广版本和支付宝推广版本两种码 根据自己需要选择推广场景&#xff0c;适合地推和网推

ReentranLock超详细讲解

目录 ReentranLockAQS底层AQS的变量、常量与内部类Node内部类 FairSync&#xff1a;公平锁lock方法AbstractQueuedSynchronizer的acquire方法tryAcquire方法getState方法setExclusiveOwnerThread方法总结tryAcquire方法 返回AbstractQueuedSynchronized的acquire方法acquireQue…

「AI知多少」第二期推荐《AIGC:智能创作时代》

一、书名 《AIGC&#xff1a;智能创作时代》 二、简介 在人工智能发展的漫长历程中&#xff0c;如何让机器学会创作一直被视为难以逾越的天堑&#xff0c;“创造力”也因此被视为人类与机器最本质的区别之一。然而&#xff0c;人类的创造力也终将赋予机器创造力&#xff0c;…

YTM32的增强型定时器eTMR外设模块详解

文章目录 eTMR外设简介eTMR工作机制系统框图引脚与信号计数器与时钟源输出比较模式PWM模式通道配对通道对的互补输出&#xff08;Complementary Mode&#xff09;双缓冲输出PWM&#xff08;Double Switch&#xff09;错误检测机制&#xff08;Fault Detection&#xff09; 输入…

搭建confluence

confluent是一款由JAVA编写用于企业知识库管理协同软件&#xff0c;多用于构建企业内部WIKI&#xff0c;支持多人协作&#xff0c;共享信息等。 当前系统环境Centos7.9&#xff0c;内存至少2G以上&#xff0c;数据库采用MySQL5.7&#xff0c;本机电脑系统Windows10 安装前准备…

uboot图形化配置界面添加自定义菜单

一. 简介 图形化配置工具的主要工作就是在 .config 下面生成前缀为“ CONFIG_ ”的变量&#xff0c;这些变量一般都要值&#xff0c;为 y &#xff0c; m 或 n &#xff0c;在 uboot 源码里面会根据这些变量来决定编译哪个文件。 本文我 们就来学习一下如何添加自己的自…