关于几个db后数据所占空间大小的问题
时间:2011-03-13
来源:互联网
assume cs:codesg,ds:data data segment db 'BaSIC' db 'iNfOrMaTiOn' db 0,0,0,0,0 data ends codesg segment start: mov ax,data mov ds,ax sub bx,bx mov cx,11 mov ds:[20h],cx mov cx,5 mov si,0 s: mov al,ds:[bx+si] or al,100000B mov ds:[bx+si],al inc si loop s mov cx,ds:[20h] add bx,16 sub si,si s0: mov al,ds:[bx+si] and al,11011111B mov ds:[bx+si],al inc si loop s0 mov ax,4c00h int 21h codesg ends end start
这段代码是将第一个字符串变为小写字母,用变位弄的,第二个相反,变为大写字母,但是上面两个字符串是连续的。
Assembly code
assume cs:code a segment db 1,2,3,4,5,6,7,8 a ends b segment db 1,2,3,4,5,6,7,8 b ends c segment db 0,0,0,0,0,0,0,0 c ends code segment start: mov ax,a mov ds,ax mov ax,0 mov bx,0 mov cx,8 s:add al,[bx] add al,[bx+16] mov [bx+32],al inc bx loop s mov ax,4c00h int 21h code ends end start
这段代码则不是连续的,a,b,c占据的空间各是16字节,不是连续的,后面都有空格,为什么?两者区别在哪,怎么判定?
作者: A328240784 发布时间: 2011-03-13
但我不知道为何这样
作者: A328240784 发布时间: 2011-03-13
作者: Lactoferrin 发布时间: 2011-03-13
segment的粒度是16字节,所以原代码中的segment按16字节对齐
作者: A328240784 发布时间: 2011-03-13
我的意思是每个segment的第一字节的地址要是16的倍数,segment内部的不管
作者: Lactoferrin 发布时间: 2011-03-13
因为第一段两个字符串在一个segment里面
我的意思是每个segment的第一字节的地址要是16的倍数,segment内部的不管
作者: A328240784 发布时间: 2011-03-13
作者: Lactoferrin 发布时间: 2011-03-13
mov ax,a
mov ax,b
mov ax,c
把ax的值显示出来,它们内的数据在内存中都是16字节对其的
作者: Lactoferrin 发布时间: 2011-03-13
你去
mov ax,a
mov ax,b
mov ax,c
把ax的值显示出来,它们内的数据在内存中都是16字节对其的
作者: A328240784 发布时间: 2011-03-13
作者: Lactoferrin 发布时间: 2011-03-13
我的意思是我想要
ds:0000 BaSIC
ds:0010 iNfOrMaTiOn
这样排序
作者: A328240784 发布时间: 2011-03-13
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28