新学汇编。刚才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段的起始地址:
| 项 | 起始地址 | 地址长度 |

最低0.47元/天 解锁文章
9688

被折叠的 条评论
为什么被折叠?



