|
主题 : : <<汇编语言>>实验七作业源程序代码 [已解决] |
回复[ 7次 ]
点击[ 665次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2011-01-19 00:50 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-19 00:37 |
第一次接触汇编语言
将近4个小时才写出调好.
看来基础还是不太扎实.
用了一个循环,
程序共用26行.
未用堆栈.
源码:
assume cs:code
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,194514
dd 345980,590827,803530,118300,134300,2759000,3753000,4649000,5937000
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800
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 di,0
mov si,0
mov cx,21
@:
mov ax,[di]
mov es:[bx],ax
mov ax,[di+2]
mov es:[bx+2],ax
mov ax,[di].54H
mov es:[bx].5,ax
mov dx,[di+2].54h
mov es:[bx+2].5,dx
div word ptr [si].0a8h
mov es:[bx].0dh,ax
mov ax,[si].0a8h
mov es:[bx].0ah,ax
add si,2
add di,4
add bx,10h
loop @
mov ax,4c00h
int 21h
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2011-01-19 11:53 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-19 00:37 |
|
|
|
|
|
[第2楼]
[ 回复时间:2011-02-12 20:22 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2011-01-29 19:28 |
codesg segment
start: mov ax,date
mov ss,ax
mov ax,table
mov ds,ax
mov bx,0
mov bp,0
mov cx,0015h
s: mov ax,[bp]
mov [bx],ax
mov ax,[bp+2]
mov [bx+2],ax
;将年数保存到table段
mov si,54h
mov ax,[bp][si]
mov [bx+5],ax
mov ax,[bp].2[si]
mov [bx+7],ax
;将公司总收人保存到table段
add si,si
mov ax,[bp][si]
mov [bx+10],ax
;将公司雇员数保存到table段
mov ax,[bx+5]
mov dx,[bx+7]
div [bx+10]
;求当年的人均收入
mov [bx+13],ax
;将人均收入保存到table段
add bx,10h
add bp,4
loop s
;进入下一次循环
mov ax,40cch
int 21h
codesg ends
end start
LZ看看我写的,貌似和你的思路差不多,但是我用了一个ss寄存器,不知道可行不!呵呵 谢谢 | | |
|
|
|
|
[第3楼]
[ 回复时间:2011-02-13 21:19 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-07-13 21:40 |
楼上貌似不对啊,lz的是对的。我还是没有理解王爽老师后面提示的什么bx,si,idata。个人觉得。只用到了[bx+idata]寻址。 | | |
|
|
|
|
[第4楼]
[ 回复时间:2011-02-13 21:21 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2009-07-13 21:40 |
如果要调用table中的某一个byte的数据,可以[bx].idata.[si],个人这样理解 | | |
|
|
|
|
[第5楼]
[ 回复时间:2011-02-13 23:08 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2011-01-29 19:28 |
楼上貌似不对啊,lz的是对的。我还是没有理解王爽老师后面提示的什么bx,si,idata。个人觉得。只用到了[bx+idata]寻址。
------------------
回复:请问哪里错误了?谢谢 | | |
|
|
|
|
[第6楼]
[ 回复时间:2011-02-13 23:12 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:4
注册日期:2011-01-29 19:28 |
回复:[第4楼]
------------------
我记得王爽老师的书上写的是 mov ax,[bx].idata[si] || mov ax,[bx][si].idata | | |
|
|
|
|
[第7楼]
[ 回复时间:2011-06-10 10:20 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2011-01-19 00:37 |
此贴由 贴主 于 [ 2011-06-10 10:20 ] 结贴。 结贴原因:问题已解决 | | |
|