A. 王爽汇编语言db存储字符串为什么是两个字节啊
db 定义的数据应按 字节 进行分析、辨识、存储。
王爽 书中这部分内容 是 bug。
B. 汇编语言:string DB "i am a student"这条语句将字符串如何存储的
汇编语言:string DB "i am a student"这条语句将字符串如何存储的?
--------
顺序存储。
一个字符,占用一个字节。
最后并没有'\0'。
C. 汇编语言中字符串的使用
mov dl,[len1]
mov ah,02h
int 21h
----
呵呵,输出,不是这样简单的。
len1,是二进制数字,必须把它变成十进制的个位、十位..,
再把各位数,都变换成ASCII码,放到DL中,最后才能输出到显示屏。
D. 汇编语言,从缓存区输出字符串,CX值存放问题
用A号功能存入了字符串到BUFFER,
[BUFFER],是预定的缓存大小,
[BUFFER+1],是实际输入的字符数目。
----------------------
字符数目,只是一个字节。
MOVCL,[BX-1]----取出一个字节,这是对的。
MOVCX,[BX-1]----下面这些,都是取两个字节,都是错的。
MOVCX,[BUFFER+1]
MOVCX,BUFFER+1
-----------------------
采纳答案中,说法都是错误的。
------
MOVCX,[BX-1];--针对这条指令,他说:
《BUFFER是字节缓冲区,所以这里是操作数据不匹配》
执行这条指令后,所需的数据,确实是传送到CL了。
只是多传送了CH而已。
错误,在于多传送了一个字节,并不是匹配不匹配的问题。
------
MOVCX,BUFFER+1,--针对这条指令,他说:
《指令执行过后,CX里存储的是BUFFER的地址+1,是个地址,不是值》
如果做过实验,他就不会这么说了。
他弄混了下面的指令:
MOVCX,OFFSETBUFFER--这才是传送地址。
-----------------------
E. 汇编语言中字符串存储时DB DW怎么确定是选用DB存储还是DW存储
字符串存储必须用db(单字节顺序存放),
不能用dw(双字节顺序存放,且要分开编辑。按低到低字节、高到高位字节对应)
codesegment
assumecs:code
org100h
start:
jmpbbb
nop
msg1dw'he','ll','o','wo','rl','d','$'
bbb:
pushcs
popds
leadx,msg1
movah,9
int21h
movah,4ch
int21h
codeends
endstart
上例输出的是“ehll oowlr d”,而不是“hello world”
F. c语言中怎么存一个字符串
在c语言中存储一个字符串,一般有两种方法,一种是字符指针,一种是使用字符数组。比如:
constchar*str="hello";//使用字符串指针
constcharstr[]="hello";//使用字符数组
如果保存的字符串,需要修改。一般使用字符数组。比如:
charpath[256]="c:\windows\";
strcat(path,"system32");
G. (汇编)关于汇编语言的字符串
1)不用,如果不用串操作指令,我们可以通过设定循环次数,或在结束处加0判断是否结束。
2)定义字符串在汇编语言中用一对‘
’表示,如
c
db
'happy!'
H. 汇编语言中字符串变量是如何存储的啊
C++的关键字 asm
微软详述:
__asm关键字启动内联汇编并且能写在任何c/c++合法语句之处.它不能单独出现.它必须接汇编指令、一组被大括号包含的指令或一对空括号.术语“__asm 块”在这里是任意一个指令或一组指令无论是否在括号内。
以下代码片段是在括号内的一个简单的__asm块。
__asm
{
mov al, 2
mov dx, 0xD007
out al, dx
}
另一种方法是,你可以在每个汇编指令前放置__asm
__asm mov al, 2
__asm mov dx, 0xD007
__asm out al, dx
因为__asm关键字是一个语句分隔符,你也可以将汇编指令放在同一行:
__asm mov al, 2 __asm mov dx, 0xD007 __asm out al, dx
以上三个的例子产生相同的代码,但是第一种风格(把__asm块用括号括起来)有一些优势。括号可以清晰的将C或C++代码和汇编代码分开,并且避免了不必要的重复__asm关键字。括号也能避免模糊性。如果你想在__asm块的同一行放置一个C或C++语句,你必须将块用括号括
起来。没有括号,编译器不能告诉汇编代码在哪里停止而C或C++代码在哪里开始。最后,因为在括号的文字有和原始MASM一样的格式,你能轻松的从一个已有的MASM源文件里剪切和黏贴文字到文件来。
不同于C和C++的括号,包含__asm块的括号对变量的作用域并没有效果。你也能嵌套__asm块,嵌套对变量作用域也没有效果。
请参考
I. 汇编语言 字符串传送和字符串储存的区别!
传送:一般指的是将数据传送到寄存器中。
储存:一般指的是将数据存储到制定的内存地址中。
J. 汇编语言字符窜存储
字符串在内存中以字节(byte)为单位存储,字符串包含多少字符就需要多少byte来存。汇编中定义一个字符串如下:
myStringBYTE"ABCDEF",0;常以0作为字符串的结尾
内存中存储顺序如图所示,从箭头开始,依次向下。假设第一个地址是0000h,下一个byte的地址就是00001h,依次类推。内存中存储的是字符的二进制编码,比如A41h=01000001b
希望对LZ有用~
PS:2L说的是英特尔架构CPU的“小尾顺序”规则,其他一些CPU可能采用“大尾顺序”
比如定义一个字(WORD):myWordWORD1234h如果是小尾顺序,那低地址存34h,高地址存12h,如图中0000h的地方存34h,00001h的地方存12h。大尾顺序则相反~(汗。。。。但愿不显得太罗嗦)