汇编程序段地址计算

  新学汇编。刚才debug一个汇编程序,很久之后发现是一个内存地址计算错误。然后意识到那是一个数据段的起始地址,在计算的时候忽略了段起始地址必须是16的倍数(8086CPU, 以两个16位寄存器合成一个20位地址的情况下)。后面会详细解释。 先来看看我的代码:

data segment
      ;年份
	db '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982', '1983', '1984', '1985'
	db '1986', '1987', '1988', '1989', '1990', '1991', '1992', '1993','1994', '1995'

      ;对应的公司收入
	dd 10h,16h,17eh,54ch,956h,1f40h,3e80h,5fa6h,0c391h,17cc7h,22481h,30388h,5477ch,903ebh,0c42cah,120d18h,1c1f38h,2a1958h,2a01e8h,565978h,5a9768h

      ;对应的公司雇员数
	dw 3h,7h,9h,0dh,1ch,26h,82h,0dch,1dch,30ah,3e9h,5a2h,8d2h,0ae9h,0fc5h,1603h,2022h,2d16h,3867h,3b99h,4588h
data ends

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


  这样,后面要使用table段的起始内存地址。 我一开始是这样计算的, 已经把寄存器ds设置为data段的起始地址:

起始地址 地址长度
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值