鱼C论坛

 找回密码
 立即注册
查看: 4779|回复: 17

[技术交流] 实验7,代码+分析,请多指教

[复制链接]
发表于 2011-6-29 14:21:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 linha0 于 2011-6-29 14:24 编辑
assume cs:code,ds:data

data segment

db '1975','1976','1977','1978','1979','1980','1981'
db '1982','1983','1984','1985','1986','1987','1988'
db '1989','1990','1991','1992','1993','1994','1995'
;以上是表示21年的21个字符串。共84个字节,起始单元:0
 
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
;以上是表示21年公司总收入的21个dword型数据。共84个字节,起始单元:84

dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
;以上是表示21年公司雇员人数的21个word型数据。共42个字节,起始单元:168
 
data ends

table segment
        db 21 dup ('year summ ne ?? ')
table ends

code segment
start:
                mov ax,data
                mov ds,ax
                mov ax,table
                mov es,ax
                
                mov bx,0
                mov si,0
                mov di,0
                mov cx,21
        s:        mov ax,[bx]
                mov es:[di],ax
                mov ax,2[bx]
                mov es:2[di],ax
                ;以上,从Data中复制年份到Table
                
                mov ax,84[bx]                         ;总收入的低16位数
                mov dx,86[bx]                         ;总收入的高16位数
                mov es:5[di],ax                        ;4单元中的空格不变
                mov es:7[di],dx
                ; 以上,从Data中复制总收入到Table
                
                div word ptr 168[si]                  ;计算人均收入,并存入AX中
                
                mov dx,168[si]
                mov es:10[di],dx                      ;复制雇员数,9单元中的空格不变
                mov es:13[di],ax                      ;将人均收入存入Table中
                
                add bx,4             ;在Data中,表示为指向下一年的(年份、总收入)双字型数据
                add si,2               ;在Data中,表示为指向下一年的(雇员数)字型数据
                add di,16            ;在Table中,表示为指向下一年的数据项集合
                loop s
                
                mov ax,4c00h
                int 21h
code ends
end start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-29 15:05:36 | 显示全部楼层
你的起始单元都是用十进制的,这样怎么也可以,小甲鱼的都是转换成16进制的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-29 18:54:27 | 显示全部楼层
编译器会帮我们转化的:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-30 01:25:15 | 显示全部楼层
我也喜欢用十进制:lol
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-30 09:08:35 | 显示全部楼层
你们这样不会出意外吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-12 16:55:05 | 显示全部楼层
table段为什么不关联
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-12 16:55:46 | 显示全部楼层
不关联会怎么样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-12 18:50:01 | 显示全部楼层
本帖最后由 linha0 于 2011-7-12 18:50 编辑
mov ax,table
mov es,ax

不是很明白“关联”这个词在你心里是什么意思?

难道是把它的段地址设置到段寄存器,就叫做“关联”?

如果是这个意思话,这个关不关联都差不多。凡是用“segment…………ends”定义的段都将占据一定内存空间(不管“关联”与“不关联”),而这个空间必定为16的倍数。

还有一点要记住,内存空间是个线性的空间;而“段”的概念是人们定义的,主要是为了方便寻址而已;
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-12 21:44:17 | 显示全部楼层
linha0 发表于 2011-7-12 18:50
不是很明白“关联”这个词在你心里是什么意思?

难道是把它的段地址设置到段寄存器,就叫做“关联 ...

关联的意思是 assume...........

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-13 12:06:42 | 显示全部楼层
milorguan 发表于 2011-7-12 21:44
关联的意思是 assume...........

上面的解释还是一样有用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-13 12:57:29 | 显示全部楼层
linha0 发表于 2011-7-13 12:06
上面的解释还是一样有用。

我的意思是用assume关联寄存器
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-13 14:33:08 | 显示全部楼层
milorguan 发表于 2011-7-13 12:57
我的意思是用assume关联寄存器

都说了,不管“关联”与“不关联”,都没有多大的影响。

你就算把"assume…………"去掉,对程序也没多大的影响(按照我学到第11章的认识来看)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-14 10:15:59 | 显示全部楼层
哇,哇,哇,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-15 05:46:29 | 显示全部楼层
不关联你用MASM编译的时候不报错么?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-15 12:54:31 | 显示全部楼层
Mr.han 发表于 2011-7-15 05:46
不关联你用MASM编译的时候不报错么?

我用实验7的代码测试过,暂时没有出现错误!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-7-2 22:57:53 | 显示全部楼层
看帖就要回帖支持下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-2 23:10:58 | 显示全部楼层
看看老帖,支持下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-7-2 23:18:08 | 显示全部楼层
assume es:table?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-29 09:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表