汇编语言实现字符串逆序输出
- 格式:doc
- 大小:110.65 KB
- 文档页数:3
汇编语言实验7实验报告一、实验目的本次实验旨在通过汇编语言编写程序,实现对字符串的操作和输出。
二、实验内容1. 编写一个汇编程序,要求从键盘输入一个字符串,并将其逆序输出到屏幕上;2. 编写一个汇编程序,要求从键盘输入两个字符串,并将它们拼接起来后输出到屏幕上。
三、实验过程1. 字符串逆序输出程序首先,需要从键盘输入一个字符串。
为了方便起见,我们可以先规定字符串的最大长度为100。
接着,我们需要定义两个变量:```buffer db 100 ; 用于存储输入的字符串length dw ? ; 存储输入的字符串长度```其中,db代表定义字节型变量,dw代表定义双字节型变量。
然后,我们需要使用INT 21H中断来读取用户输入的字符串。
具体而言,我们可以使用下面这段代码:```mov ah, 0Ah ; 设置INT 21H功能号为0Ahmov dx, offset buffer ; 将buffer的地址传给DX寄存器int 21h ; 调用INT 21H中断```该代码会将用户输入的字符串存储在buffer中,并且将其长度存储在length变量中。
接着,我们需要将该字符串逆序输出到屏幕上。
为了实现这个功能,我们可以使用栈来存储字符串中的每个字符,并逐个弹出来输出。
具体而言,我们可以使用下面这段代码:```mov si, offset buffer + 1 ; 将si寄存器指向字符串的第一个字符mov cx, length ; 将cx寄存器设置为字符串长度dec cx ; 字符串长度需要减1reverse:push byte ptr [si] ; 将当前字符压入栈中inc si ; 指向下一个字符loop reverse ; 循环直到所有字符都被压入栈中mov ah, 02h ; 设置INT 21H功能号为02h,表示输出一个字符print:pop dx ; 弹出栈顶元素int 21h ; 输出该字符loop print ; 循环直到所有字符都被弹出并输出完毕```2. 字符串拼接程序首先,需要从键盘输入两个字符串。
标题:Python2 字符逆序的简单写法1. 概述在编程中,经常会遇到需要对字符串进行逆序操作的情况。
Python2 提供了一种简单的写法,可以轻松实现字符串的逆序。
本文将介绍如何使用 Python2 来实现字符逆序的操作,包括具体的代码和示例。
2. 使用步骤在 Python2 中,可以通过以下几个简单的步骤来实现字符串的逆序:a) 我们需要定义一个字符串变量,用于存储需要进行逆序操作的字符串。
```pythonstr = "Hello, World!"```b) 利用 Python2 中的切片功能,可以很轻松地实现字符串的逆序。
只需要使用 `[::-1]` 的形式,即可将字符串逆序。
```pythonreversed_str = str[::-1]```c) 将逆序后的字符串打印出来,即可看到逆序结果。
```pythonprint(reversed_str)```3. 示例下面我们通过一个具体的示例来演示如何使用 Python2 来实现字符逆序的操作。
```pythonstr = "Hello, World!"reversed_str = str[::-1]print(reversed_str)```输出结果为:```!dlroW ,olleH```4. 结论通过以上步骤和示例,我们可以看到,在 Python2 中实现字符串逆序操作非常简单。
只需要利用切片功能,即可轻松地实现字符串的逆序。
这种简单的写法不仅方便,而且代码清晰易懂,非常适合在实际开发中使用。
Python2 提供了一种简单的写法,可以便捷地实现字符串的逆序操作。
希望本文能够对读者有所帮助,谢谢!5. 参考资料- Python2 切片 (Slice):xxx#slice在Python2中,实现字符串逆序操作是编程中常见的需求之一。
正如前文所述,利用切片功能可以轻松地实现字符串的逆序操作。
而且,逆序操作对于处理字符串的应用场景非常广泛,比如在文本处理、数据分析、字符串匹配等方面都有着重要的作用。
【原创】(C#)字符串倒序的5种⽅法【原创】(C#)字符串倒序的5种⽅法作者:神游⽇期:2009-08-27字体⼤⼩: ⼩中⼤转载请注明:奇猫居-神游天地间c# 实现字符串倒序的n 种写法最简洁就是linq的写法,推荐⽅法⼀、// string concatenation with for looppublic string ReverseA(string text){char[] cArray = text.ToCharArray();string reverse = String.Empty;for (int i = cArray.Length - 1; i > -1; i--){reverse += cArray[i];}return reverse;}⽅法⼆、// Array.Reverse functionpublic string ReverseB(string text){char[] charArray = text.ToCharArray();Array.Reverse(charArray);return new string(charArray);}⽅法三、// push/pop Stack<>public string ReverseC(string text){Stack resultStack = new Stack();foreach (char c in text){resultStack.Push(c);}StringBuilder sb = new StringBuilder();while (resultStack.Count > 0){sb.Append(resultStack.Pop());}return sb.ToString();}⽅法四、// LINQpublic string ReverseD(string text){return new string(text.ToCharArray().Reverse().ToArray()); }⽅法五、// StringBuilderpublic string ReverseE(string text){char[] cArray = text.ToCharArray();StringBuilder reverse = new StringBuilder();for (int i = cArray.Length - 1; i > -1; i--){reverse.Append(cArray[i]);}return reverse.ToString();}。
如何完成字符串的逆序在计算机编程中,字符串是一种非常常见的数据类型。
逆序字符串是指将字符串中的字符顺序颠倒过来。
在本文中,我将介绍几种常见的方法来实现字符串的逆序。
方法一:使用循环最简单的方法是使用循环逐个处理字符串中的字符。
具体步骤如下:1. 定义一个空字符串变量,用于存储逆序后的结果。
2. 从字符串的最后一个字符开始,逐个向前遍历。
每遍历到一个字符,就将其添加到结果字符串变量中。
3. 当遍历完整个字符串后,逆序的结果就存储在结果字符串变量中。
下面是一个示例代码,演示了如何使用循环实现字符串的逆序:```pythondef reverse_string(string):reversed_string = ""for i in range(len(string)-1, -1, -1):reversed_string += string[i]return reversed_strings = "Hello, World!"print(reverse_string(s)) # 输出:!dlroW ,olleH```方法二:使用切片在Python中,字符串也可以使用切片操作。
切片操作可以从一个字符串中提取出指定范围的子字符串。
通过逆向切片,我们可以轻松实现字符串的逆序。
下面是一个示例代码,演示了如何使用切片实现字符串的逆序:```pythondef reverse_string(string):return string[::-1]s = "Hello, World!"print(reverse_string(s)) # 输出:!dlroW ,olleH```方法三:使用递归递归是一种常见的编程技巧,在处理字符串的逆序时也可以使用递归来实现。
递归的思想是将一个问题拆分成更小的子问题,然后通过递归调用解决子问题,最终得到原始问题的解。
下面是一个示例代码,演示了如何使用递归实现字符串的逆序:```pythondef reverse_string(string):if len(string) <= 1:return stringreturn reverse_string(string[1:]) + string[0]s = "Hello, World!"print(reverse_string(s)) # 输出:!dlroW ,olleH```方法四:使用栈栈是一种后进先出(Last In First Out,LIFO)的数据结构,在处理字符串的逆序时也可以使用栈来实现。
【C】字符串逆序将⼀个字符串str的内容颠倒过来,并输出。
str的长度不超过100个字符。
如:输⼊“I am a student”,输出“tneduts a ma I”。
输⼊参数:inputString:输⼊的字符串返回值:输出转换好的逆序字符串输⼊样例:I am a student输出样例:tneduts a ma I解决⽅案1:#include<stdio.h>int main(){char inputString[101];char c;int i=0;while((c=getchar())!='\n'){inputString[i]=c;i++}inputSting[i]='\0';for(int j=i-1;j>=0;j--)printf("%c",inputString[j]);return 0;}这种⽅法可以实现字符串的逆序,但是在华为OJ上却通不过,原因是,c定义为char类型,但是getchar()函数的原型是int getchar(void)返回值是int,因此可能会造成数据丢失。
解决⽅案2#include<stdio.h>#include<string.h>int main(){char inputString[101];gets(inputString);for(int j=strlen(inputString)-1;j>=0;j--)printf("%c",inputString[j]);return 0;}这种⽅法⽤gets()函数读取⼀⾏,放⼊inputString中,然后逆序打印,通过了华为OJ。
运⾏结果:另外,关于字符串的⼏种输⼊⽅法,参见:。
字符串逆序输出的算法不说了,直接贴代码:/*** StringReverse⽤于处理字符串逆序输出的算法,* 时间:2022-02-24** 来源:javascript重难点实例精讲*///定义⼀个字符串var str = 'abcdefg';/*** 算法1:采⽤数组的reverse()实现逆序*/function reverseString1(str) {return str.split('').reverse().join('');}/*** 算法2:利⽤字符串的charAt()*/function reverseString2(str) {let result = '';for (let i = str.length; i >= 0; i--) {result += str.charAt(i);}return result;}/*** 算法3:使⽤递归** 会⽤到charAt(),涉及到的参数:字符串、位置、返回值(拼接字符串)*/function reverseString3(str, result = '', pos = str.length - 1) {if (pos < 0) {return result;}result += str.charAt(pos--);return reverseString3(str, result, pos);}/*** 算法4:改变slice()执⾏主体*/function reverseString4(str) {return Array.prototype.slice.call(str).reverse().join('');}/*** 算法5:使⽤栈, 要在栈定义之后调⽤栈,否则会出现异常*///定义⼀个栈//使⽤类创建栈的时候,在栈声明之前调⽤栈,会出现初始化前调⽤类的异常//Cannot access 'Stack' before initializationclass Stack {constructor() {this.data = []; //保存栈内元素this.top = 0; //记录栈顶位置}//⼊栈:先在栈顶添加元素,然后元素个数加1push(element) {this.data[this.top++] = element;}//出栈:先返回栈顶元素,然后元素个数减1pop() {return this.data[--this.top];}length() {return this.top;}toString() {return this.data.toString() + ',[class]';}}// //使⽤函数创建栈,在栈声明之前调⽤栈,会出现异常// //s.push is not a function// function Stack() {// this.data = [];// this.top = 0;// }// Stack.prototype = {// push: function (element) {// this.data[this.top++] = element;// },// pop: function () {// return this.data[--this.top];// },// length: function () {// return this.top;// },// toString: function () {// return this.data.toSgtring() + ',[function]';// },// }function reverseString5(str) {let s = new Stack();let arr = str.split('');let result = '';for (const i of arr) {if (i) {s.push(i);}}while (s.length()) {result += s.pop();}// console.log(s.toString());return result;}console.log(reverseString1(str)); //gfedcba console.log(reverseString2(str)); //gfedcba console.log(reverseString3(str)); //gfedcba console.log(reverseString4(str)); //gfedcba console.log(reverseString5(str)); //gfedcba。
24个汇编小程序题目列表:逆序输出字符串“BASED ADDRESSING”从键盘上输入两个数,分别放到x,y单元,求出它们的和是编写一段程序,要求在长度为10h的数组中,找出大于42h的无符号数的个数并存入地址为up开始区域,找出小于42h的无符号数的个数并存入地址为down的开始区域键盘输入一段字符串,其中小写字母以大写字母输出,其他字符不变输出从键盘上就收一个小写字母,找出它的前导字符和后续字符,在顺序显示这三个字符把一个包含20个数据的数组M分成两组:正整数组P和负整数组N,分别把这两个数组中的数据的个数显示出来求出首地址为data的100个字数组中的最小偶数,并把它放在ax中输入两船字符串string1和string2,并比较两个字符串是否相等,相等就显示“match”,否则显示“no match”从键盘接收一个四位的十六进制数,并在终端显示与它等值的二进制数从键盘输入一系列以$为结束符的字符串,然后对其中的非数字字符计数,并显示计数结果有一个首地址为mem的100个字的数组,试编程序删除数组中所有为零的项,并将后续项向前压缩,最后将数组的剩余部分补上零从键盘上输入一串字符(用回车键结束,使用10号功能调用)放在string中,是编制一个程序测试字符串中是否存在数字。
如有,则把cl的第五位置1,否则将该位置置0在首地址为data的字数组中,存放了100h的16位字数据,试编写一个程序,求出平均值放在ax寄存器中,并求出数组中有多少个数小于此平均值,将结果放在bx寄存器中(f分别考虑有符号数、无符号数情况)一直数组A包含15个互不相等的整数,数组B包含20个互不相等的整数。
试编制一个程序,把既在A中又在B中出现的整数存放于数组C中设在A、B和D单元中分别存放着三个数。
若三个数都不是0,则求出三个数的和并存放在S单元,若其中有一个数为0,则把其它两个单元也清零。
请编写此程序从键盘输入一系列字符(以回车键结束),并按字母、数字和其他字符分类计数,最后显示这三类的计数结果已定义两个整数变量A和B,试编写程序完成以下功能(1)若两个树种有一个是奇数,则将奇数存入A中,偶数存入B中(2)若两个数均为奇数,则将两个数加1后存回原变量(3)若两个数均为偶数,则两个变量均不变写一段子程序skiplines,完成输出空行的功能。
输入一串以‘!’结束的字符,按逆序输出。
摘要:
1.任务描述
2.解决方案
3.代码实现
4.结论
正文:
【任务描述】
在编程领域,有时需要对输入的字符串进行逆序输出。
给定一个以‘!’结束的字符串,我们需要编写一个程序实现按逆序输出。
【解决方案】
要实现这个功能,我们可以使用Python 语言编写一个简单的程序。
首先,读取输入的字符串,然后遍历字符串,将字符添加到一个新的字符串中,最后输出新字符串。
【代码实现】
以下是一个Python 程序,实现了给定任务:
```python
input_str = input("请输入一串以"!"结束的字符:")
if input_str[-1] != "!":
print("输入的字符串不以"!"结束")
else:
reversed_str = ""
for i in range(len(input_str) - 1, -1, -1):
reversed_str += input_str[i]
print("逆序输出结果:", reversed_str)
```
【结论】
通过以上代码实现,我们可以顺利地完成给定任务。
首先,我们读取用户输入的字符串,然后检查字符串是否以‘!’结束。
如果满足条件,我们使用逆序循环遍历输入字符串,并将字符添加到新字符串中。
c语言逆序C语言是一门十分流行的编程语言,它有着广泛的应用,在计算机科学、软件工程、嵌入式系统等领域中都有广泛的应用。
在这篇文章中,我们将探讨如何使用C语言来实现逆序字符串、数字以及数组。
逆序字符串逆序字符串是指将字符串中的字符顺序颠倒过来,例如"hello,world"变成"dlrow,olleh"。
要实现字符串逆序,我们需要先找到字符串的长度,然后将字符串中的字符逐一交换位置,直至整个字符串被逆序。
下面是一个简单的C语言函数,它可以实现字符串逆序:```#include <stdio.h>#include <string.h>void reverseString(char* str) {int i = 0, j = strlen(str) - 1;while (i < j) {char temp = str[i];str[i] = str[j];str[j] = temp;i++;j--;}}上述代码中,我们定义了一个`reverseString`函数,该函数接收一个指向字符串的指针作为输入。
在函数内部,我们定义了两个变量`i`和`j`,它们分别指向字符串的首位和末位。
我们使用一个while循环,每次交换两个变量所指向的字符,直至i小于j。
最后,我们使用`printf`函数输出逆序后的字符串。
逆序数字是指将数字的位数顺序颠倒过来,例如将1234变成4321。
要实现数字逆序,我们可以先将数字转换成字符串,再按照上述方法逆序字符串,最后再将字符串转换成数字。
逆序数组逆序数组是指将数组中的元素顺序颠倒过来,例如将数组arr[] = {1, 2, 3, 4, 5}变成{5, 4, 3, 2, 1}。
要实现数组逆序,我们可以使用两个指针i和j,分别指向数组的首位和末位,然后交换两个指针所指向的元素,直到i大于等于j。
总结本文介绍了如何使用C语言实现字符串、数字和数组的逆序。
如何完成字符串的逆序第1篇:如何完成字符串的逆序不开辟用于交换数据的临时空间,如何完成字符串的逆序(在技术一轮面试中,有些面试官会这样问)#include“stdafx.h”voidchange(char*str){for(inti=0,j=strlen(str)-1;istr[i]^=str[j]^=str[i]^=str[j];}}intmain(intargc,char*argv[]){charstr[]=“abcdefg”;printf(“strsource=%s\n”,str);change(str);printf(“strresult=%s\n”,str);returngetchar();未完,继续阅读 >第2篇:字符串str除首尾字符外的其他字符按升序排列请编写函数char*fun(char*str),它的功能是将字符串str除首尾字符外的其他字符按升序排列。
例如,输入“string”,输出为”string”.解:#include#include#includechar*fun(char*str){char*p=str+1,t;intlen=strlen(p)-1;intk,m,min=0;for(k=0;k{min=k;for(m=k+1;mif(p[min]>p[m])min=m;if(min!=k){t=p[min];p[min]=p[k];p[k]=t;}}returnstr;}voidmain(){chars[128];clrscr();pr intf(“\npleaseenterastring:\n”);gets(s);printf(“\nthestringafterchangingis:\n%s\n”,fun(s)未完,继续阅读 >第3篇:如何高效率的完成工作我们总是忙碌着,在生活的高节奏中倍感窒息。
但你是否估算过你那些忙碌的分分秒秒背后,是否真的产生了价值?你是为成效而忙,还是单纯为忙而忙?一天是24小时,总共1440分钟,它的1%是14.4分钟,也就是古人所说“一盏茶”的功夫。
1、编写程序,将26个字母逆序输出。
Private sub mand_click()Dim s as string,r as string,t as string*1S=“ABCDEFGHIJKLMNOPQRSTUVWXYZ〞Print sM=Len(s)For i=m to 1 step -1T=mid(s,i,1)R=r&tNext iPrint rEnd sub2、编写程序,在窗体上随机输出一个10--99之间的两位整数。
Private Sub Form_Click()clRandomizePrint Int(Rnd() * 90) + 10End Sub3、在窗体的单击事件中编写程序,从键盘输入3个数,按从小到大的顺序输出到窗体上。
Private Sub Form_Click()clsa = Val(InputBox("a="))b = Val(InputBox("b="))c = Val(InputBox("c="))If a > b Thent = a: a = b: b = tEnd IfIf a > c Thent = a: a = c: c = tEnd IfIf b > c Thent = b: b = c: c = tEnd IfPrint "按从小到大排序后的结果:"; a; "、"; b;"、"; cEnd Sub4、编写程序,要求随着不断单击命令按钮mand1,窗体的标题依次显示为:今天是星期一→今天是星期二→今天是星期三→今天是星期四→今天是星期五→今天是星期六→今天是星期日。
Private Sub mand1_Click()Static i As Integeri = i + 1Select Case iCase 1Form1.Caption = "今天是星期一"Case 2Form1.Caption = "今天是星期二"Case 3Form1.Caption = "今天是星期三"Case 4Form1.Caption = "今天是星期四"Case 5Form1.Caption = "今天是星期五"Case 6Form1.Caption = "今天是星期六"Case 7Form1.Caption = "今天是星期日"i = 0End SelectEnd Sub5、编写程序,将字符串"山高人为峰"按逆序"峰为人高山"输出。
输入一串以‘!’结束的字符,按逆序输出。
以下是一个示例代码,可以接收用户输入的字符串,并按逆序输出,直到遇到 '!' 结束:
string = input("请输入一串字符(以'!'结束):")
reversed_string = ""
while string[-1] != '!':
reversed_string += string[::-1]
string = input("请输入一串字符(以'!'结束):")
reversed_string += string[:-1][::-1]
print("逆序输出:", reversed_string)
该代码使用input() 函数来接收用户输入的字符串,并通过[::-1] 切片运算符将字符串倒序。
循环会一直进行,直到输入的字符串以'!' 结束。
循环结束后,将最后一个字符串(除去'!')按逆序添加到 reversed_string 中,并输出结果。
这只是一个示例代码,假设用户会按要求正确输入,并以'!' 结尾。
在实际应用中,你可能需要添加额外的输入验证和错误处理来确保程序的健壮性。
语C字母戏范文现原在计算机编程领域,C语言是一种广泛使用的编程语言。
它是一种高级语言,但是它的语法和结构非常接近于汇编语言,因此它也被称为“系统编程语言”。
C语言的语法非常简单,但是它的功能非常强大,因此它被广泛应用于操作系统、编译器、数据库、网络等领域。
C语言的字母戏是一种非常有趣的编程技巧。
它利用了C语言中的指针和数组等特性,通过对字符数组进行操作,实现了一些非常有趣的效果。
下面我们来看一些C语言字母戏的范文,以及它们的实现原理。
字母倒序字母倒序是一种非常简单的字母戏。
它的实现原理非常简单,只需要将字符串中的字符逆序输出即可。
下面是一个实现字母倒序的C语言程序:#include <stdio.h>#include <string.h>void reverse(char*str){int len = strlen(str);for(int i = len -1; i >=0; i--){printf("%c", str[i]);}}int main(){char str[]="Hello, world!";reverse(str);return0;}在这个程序中,我们定义了一个函数reverse,它接受一个字符串作为参数,然后将字符串中的字符逆序输出。
在main函数中,我们定义了一个字符串str,然后调用reverse函数将它逆序输出。
字母替换字母替换是一种将字符串中的某些字符替换成其他字符的字母戏。
下面是一个实现字母替换的C语言程序:#include <stdio.h>#include <string.h>void replace(char*str,char from,char to){int len = strlen(str);for(int i =0; i < len; i++){if(str[i]== from){str[i]= to;}}}int main(){char str[]="Hello, world!";replace(str,'o','0');printf("%s", str);return0;}在这个程序中,我们定义了一个函数replace,它接受一个字符串、一个需要替换的字符和一个替换后的字符作为参数,然后将字符串中的所有需要替换的字符替换成替换后的字符。
[递归]字符串逆序递归是一种常用的算法思想,它在计算机科学中有着广泛的应用。
递归的概念是指一个函数在执行过程中调用自身的过程。
在本文中,我们将探讨递归在字符串逆序中的应用。
让我们来了解一下什么是字符串逆序。
字符串逆序是指将一个字符串中的字符按照相反的顺序排列。
例如,将字符串"Hello, World!"逆序后得到的结果是"!dlroW ,olleH"。
实现字符串逆序的方法有很多种,其中递归是一种简洁而优雅的解决方案。
那么,我们如何使用递归来实现字符串逆序呢?让我们来看一个简单的例子。
假设我们有一个字符串"Hello",我们想要将它逆序。
我们可以把这个问题分解为两个步骤:将字符串的第一个字符与剩余字符逆序排列后的结果拼接在一起。
这样,我们就可以使用递归来解决这个问题。
具体的实现如下所示:1. 如果字符串长度为0或1,直接返回该字符串。
2. 否则,将字符串的第一个字符与剩余字符逆序排列后的结果拼接在一起,得到逆序后的字符串。
下面是一个使用递归实现字符串逆序的示例代码:```pythondef reverse_string(s):if len(s) <= 1:return sreturn reverse_string(s[1:]) + s[0]```现在,让我们来测试一下这个函数。
我们输入一个字符串"Hello",期望的输出是"olleH"。
我们可以调用这个函数并打印输出结果,代码如下所示:```pythons = "Hello"reversed_s = reverse_string(s)print(reversed_s)```运行这段代码,我们可以得到预期的输出"olleH"。
除了上述的示例代码,我们还可以使用其他编程语言来实现字符串逆序,例如Java、C++等。
北京邮电大学
微机原理与接口技术实验报告
学院:电子工程学院
班级:2012211203
学号:2012210876
姓名:邱启哲
字符串的逆序存储实验
一、题目要求
实现将STRING1起始存取单元中的字符串’ABCDEFGHIJKLM’逆序存放到STRING2的存储单元中,并在屏幕上显示结果。
二、设计思路
在数据段定义时,将字符串’ABCDEFGHIJKLM’存入STRING1中,并定义一个空字符串数组STRING2用于存放字符。
将指针[STRING1+BP]指向字符串数组STRING1的最后一个字符,指针[STRING2+BX]指向STRING2的起始字符对其进行赋值,每次赋值后STRING1的指针减一,STRING2的指针加一,循环赋值13次。
赋值完成后用系统调用实现STRING2中内容的循环输出。
三、程序代码
DATA SEGMENT
STRING1 DB 'ABCDEFGHIJKLM'
STRING2 DB 13DUP(0)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DA TA
MOV DS,AX
MOV CX,13
MOV BX,0
MOV BP,12
LOOP1:;此循环用于实现对STRING2的赋值功能MOV AL,[STRING1+BP];通过AL实现STRING1对STIRNG2的赋值
MOV [STRING2+BX],AL
INC BX
DEC BP
LOOP LOOP1
MOV CX,13;将CX值复员以便进入下一个循环
MOV BX,OFFSET STRING2;使BX指向STRING2的起始字符LOOP2:
MOV AH,2 ;调用2号系统调用,输出STRING2
MOV DL,[BX];用STRING2中的字符为DL赋值
INT 21H
INC BX;BX加一,向后移一位
LOOP LOOP2
MOV AH,4CH;程序结束
INT 21H
CODE ENDS
END START
四、程序运行截图
1、汇编和连接过程
2、生成相应程序文件
3、程序运行结果
由结果可见,实现了字符串的逆序存储。
五、实验总结
这次上机实验的题目不难,但是在完成的过程中遇到了一些问题。
开始编译的时候迟迟过不了,后来发现是因为不能通过CX等通用寄存器引用内存,只能通过BX,BP的基址寻址和SI,DI的变址寻址来访问内存。
后来发现每次都是送入STRING2中一个正序的字符串,这个问题困扰了我很久,因为我是使用[STRING1+12-BX]来实现对STRING1的逆向逐个字符访问,后来发现这样做不能实现预期功能,在[]不能用减号和加数字,只能对寄存器进行操作。
解决了这两个问题,程序终于通过并实现了逆序存储,这个过程我学到很多,巩固了汇编程序的编写和编译调试过程,熟悉了内存寻址的操作。