. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据处理的两个基本问题
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  <<汇编语言>>实验七作业源程序代码  [已解决] 回复[ 7次 ]   点击[ 665次 ]  
lshang
[帖 主]   [ 发表时间: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
lshang
[第1楼]   [ 回复时间:2011-01-19 11:53 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-19 00:37
貌似没人看额... 杯具 欢迎拍砖
character_w
[第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寄存器,不知道可行不!呵呵 谢谢
xom
[第3楼]   [ 回复时间:2011-02-13 21:19 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-13 21:40
楼上貌似不对啊,lz的是对的。我还是没有理解王爽老师后面提示的什么bx,si,idata。个人觉得。只用到了[bx+idata]寻址。
xom
[第4楼]   [ 回复时间:2011-02-13 21:21 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2009-07-13 21:40
如果要调用table中的某一个byte的数据,可以[bx].idata.[si],个人这样理解
character_w
[第5楼]   [ 回复时间:2011-02-13 23:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:4
注册日期:2011-01-29 19:28
楼上貌似不对啊,lz的是对的。我还是没有理解王爽老师后面提示的什么bx,si,idata。个人觉得。只用到了[bx+idata]寻址。
------------------
回复:请问哪里错误了?谢谢
character_w
[第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
lshang
[第7楼]   [ 回复时间:2011-06-10 10:20 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-19 00:37
此贴由 贴主 于 [ 2011-06-10 10:20 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved