汇编语言——用INT 21H 的A号功能,输入一个字符串存放在内存,倒序输出

本文主要是介绍汇编语言——用INT 21H 的A号功能,输入一个字符串存放在内存,倒序输出,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

用INT 21H 的A号功能,输入一个字符串“Hello, world!”,存放在内存,然

后倒序输出。

在DOS中断中,INT 21H是一个常用的系统功能调用中断,它提供了多种功能,其中A号功能用于字符串的输入。

在使用这个功能时,通常需要设置一个缓冲区来存储输入的字符串。
缓冲区的格式是特定的:
第一个字节通常表示缓冲区的大小,即可以存储的最大字符数(包括最后的回车符);
第二个字节在接收到字符串后将放置实际输入字符串的大小(不包括回车符)
字符串的内容从第三个字节开始存储。

当程序调用INT 21H的A号功能时,它会等待用户从键盘输入字符串;
用户输入的字符串将被存储在之前设置的缓冲区中(从第三个字节开始);
同时,缓冲区的第二个字节会被更新为实际输入的字符数(不包括回车符)。

ds:dx=缓冲区首地址

定义数据段:

data segmentbuffer db 200,?,200 dup (?)
data ends

在这里插入图片描述

输入123后的数据段:

在这里插入图片描述

其他程序细节看代码注释:

data segmentbuffer db 200,?,200 dup (?)
data endsstack segment stacktop label worddw 30h dup (?)
stack endscode segmentassume ds:data,ss:stack,cs:code
main proc far;初始化数据段mov ax,datamov ds,ax;初始化堆栈段mov ax,stackmov ss,axlea sp,top;把缓冲区首地址传给dxlea dx,buffer;调用a号功能输入字符串mov ah,0ahint 21h;实际输入字符串字数(不含回车)会放在缓冲区首地址+1(第二个字节)的位置mov bx,dx;cx作为循环计数器,先清零mov cx,0;再用cx的低8位cl取出[bx+1]的内容,即字符数mov cl,[bx+1];si作为逆序输出的偏移量,需要加首地址的基础上+1 -> 因为存放字符串是从缓冲区第三个字节开始mov si,cxadd si,bxinc si;逆序输出字符串	
next:mov dl,[bx+si]mov ah,2int 21hdec siloop nextmov ah,4chint 21h
main endp
code endsend main

这篇关于汇编语言——用INT 21H 的A号功能,输入一个字符串存放在内存,倒序输出的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/865376

相关文章

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

关于Java内存访问重排序的研究

《关于Java内存访问重排序的研究》文章主要介绍了重排序现象及其在多线程编程中的影响,包括内存可见性问题和Java内存模型中对重排序的规则... 目录什么是重排序重排序图解重排序实验as-if-serial语义内存访问重排序与内存可见性内存访问重排序与Java内存模型重排序示意表内存屏障内存屏障示意表Int

最好用的WPF加载动画功能

《最好用的WPF加载动画功能》当开发应用程序时,提供良好的用户体验(UX)是至关重要的,加载动画作为一种有效的沟通工具,它不仅能告知用户系统正在工作,还能够通过视觉上的吸引力来增强整体用户体验,本文给... 目录前言需求分析高级用法综合案例总结最后前言当开发应用程序时,提供良好的用户体验(UX)是至关重要

python实现自动登录12306自动抢票功能

《python实现自动登录12306自动抢票功能》随着互联网技术的发展,越来越多的人选择通过网络平台购票,特别是在中国,12306作为官方火车票预订平台,承担了巨大的访问量,对于热门线路或者节假日出行... 目录一、遇到的问题?二、改进三、进阶–展望总结一、遇到的问题?1.url-正确的表头:就是首先ur

C#中字符串分割的多种方式

《C#中字符串分割的多种方式》在C#编程语言中,字符串处理是日常开发中不可或缺的一部分,字符串分割是处理文本数据时常用的操作,它允许我们将一个长字符串分解成多个子字符串,本文给大家介绍了C#中字符串分... 目录1. 使用 string.Split2. 使用正则表达式 (Regex.Split)3. 使用

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

如何评价Ubuntu 24.04 LTS? Ubuntu 24.04 LTS新功能亮点和重要变化

《如何评价Ubuntu24.04LTS?Ubuntu24.04LTS新功能亮点和重要变化》Ubuntu24.04LTS即将发布,带来一系列提升用户体验的显著功能,本文深入探讨了该版本的亮... Ubuntu 24.04 LTS,代号 Noble NumBAT,正式发布下载!如果你在使用 Ubuntu 23.

TP-LINK/水星和hasivo交换机怎么选? 三款网管交换机系统功能对比

《TP-LINK/水星和hasivo交换机怎么选?三款网管交换机系统功能对比》今天选了三款都是”8+1″的2.5G网管交换机,分别是TP-LINK水星和hasivo交换机,该怎么选呢?这些交换机功... TP-LINK、水星和hasivo这三台交换机都是”8+1″的2.5G网管交换机,我手里的China编程has

Django中使用SMTP实现邮件发送功能

《Django中使用SMTP实现邮件发送功能》在Django中使用SMTP发送邮件是一个常见的需求,通常用于发送用户注册确认邮件、密码重置邮件等,下面我们来看看如何在Django中配置S... 目录1. 配置 Django 项目以使用 SMTP2. 创建 Django 应用3. 添加应用到项目设置4. 创建

使用 Python 和 LabelMe 实现图片验证码的自动标注功能

《使用Python和LabelMe实现图片验证码的自动标注功能》文章介绍了如何使用Python和LabelMe自动标注图片验证码,主要步骤包括图像预处理、OCR识别和生成标注文件,通过结合Pa... 目录使用 python 和 LabelMe 实现图片验证码的自动标注环境准备必备工具安装依赖实现自动标注核心