【发布时间】:2019-05-04 20:09:53
【问题描述】:
我的问题是我试图在循环中获取用户输入,并且每次我想将该输入存储到内存中的某个位置以便稍后访问它并进行一些更改后打印它。而且我很困惑如何首先声明一个可以容纳我的 5 个单词的数组,然后如何将每次输入的输入存储到该数组中。
正是我正在取主题的名称:c++ 中的循环看起来像这样:
string subjects_code[5]
for(int i=0; i<5; i++)
cin>>subjects_code[i];
// like AFJS421 , CSFA424, SCSJ1023 and so on
我在整个互联网和 YouTube 上进行了研究,我发现你不能在汇编中声明一个字符串数组,你基本上只有一个字节数组,后跟一个空终止符。我明白这一点,我用它做了我的代码,它正在工作,但问题是我真的需要将 5 个主题代码存储到 5 个不同的变量(或至少是内存位置)中,因为稍后经过一些计算我需要打印回来那些科目。
;taking input from user: in a Loop
;in .data I have subjects_code BYTE MAX DUP(?)
MAX = 20
mov ebx,0
mov count, 5 ; cuz ReadString uses ecx as buffersize
InputLoop:
; This is just a prompt out, no need to worry about it
mov ecx, MAX
mov edx, OFFSET Enter_code ; setting offset for prompt
; temp variable to read into it, use it for assgining
mov edx, OFFSET temp_subject_code
call ReadString ; reading the code into temp
mov subjects_code+[ebx], temp_subject_code
add ebx, 4
mov ecx, count
dec count
Loop InputLoop
;---------------------------------------------------------------
存储每个字符串后,我希望在程序结束时做:
subject1: SCSJ134
subject2: SCSR231
Subject3: SCSI392
一直到Subject5。
【问题讨论】:
-
C++ 字符串和汇编字符串之间的主要区别在于,在 C++ 中,编译器和/或运行时库管理字符串的内存并根据需要分配/复制内存。编写汇编代码时,您必须自己处理这些细节。您不能简单地将一个字符串分配给另一个字符串,您必须编写代码来实际计算位置并复制字节。在这方面,C 比 C++ 更接近于汇编语言的功能,因此您可能需要考虑使用 C 代码而不是 C++ 作为汇编代码的原型,以便正确执行步骤。