该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
(一)dd是用来定义一个数据占用4个字节的变量的,db是用来定义一个数据占用1个字节的变量的.....
(二)你要定义字符串,那就应该用
a db '70','60','80','79','55','90','$'这种形式,它等价于下面的语句:
a db '706080795590$' 也等价于下面的语句:
a db '7','0','6','0','80795590','$' 还等价于下面的语句:
a db 37h,30h,'6',38h,'0795590$' 还等价于下面的语句:
a db 55,48,'6',38h,'0795590',36 (你要区分和清楚哪些是十进制数、哪些是十六进制数、它们在ASCII编码中各有什么意义)
为什么可以这样写?这是因为
a名义上是变量名,实际上它是db后面第一个数据所在的存储器的偏移地址,
而单引号内是数也好、是其他字符也好,都统统被认为是对单引号内的这个可显示字符进行定义,即进行编码。
例如:
a db 7
a db '7'
这两条语句被编译链接后生成的机器码的内容是不一样的:
第一个 7 还是 7,用二进制数来表示就是:00000111
第二个‘7’生成的数据用十进制数来表示是55,用二进制数来表示就是:00110111,用十六进制数表示就是37h
也就是说,如果你想定义的数据是用来显示或者打印的文字,那你的程序有两种基本写法:
一是将这些文字符号加引号,
二是直接写这个文字的ASCII编码。
如果纯是为了编写参加计算的数,那就直接编写成这个数,而不需要在外加引号。
(三)在ASCII编码体系下,一个文字字符被设定为只占一个字节,所以定义字符串用db。
(四)从你的程序说明来看,程序是用来排序并有序地输出六个数来看,你的数据定义程序片段是写错了,我想可能是:
a db 70,60,80,79,55,90
上面的数各占一个字节。
但是,你要是排序后还显示出来,那程序要复杂了,因为你还得将上面的数变换成可显示文字的编码才能输出出来。
我给你一个题目用来练习:
编程,将70这个数在屏幕上显示出来。
做出来后,才去做你现在的题目。