. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据处理的两个基本问题
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验的问题 LOOP  循环7次就卡死了  [待解决] 回复[ 5次 ]   点击[ 348次 ]  
wlzaini1314
[帖 主]   [ 发表时间:2011-04-16 19:24 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-01-15 22:31
assume cs:Code
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' 
    
    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479
    dd 140417,197514,345980,590827,803530,118300,1843000
    dd 2759000,3753000,4649000,5937000
    
    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037
    dw 5635,8226,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 si,0
       mov di,0
       mov bp,0
       mov cx,21
       
   s:  
       mov ax,[bx+si]
       mov es:[bp],ax
       mov ax,[bx+si+54h]
       mov es:[bp+5],ax
       mov dx,ax
       mov ax,[bx+di+0a8h]
       mov es:[bp+0ah],ax
       mov ax,[bx+si+2]
       mov es:[bp+2],ax
       mov ax,[bx+si+56h]
       mov es:[bp+7],ax
       div word ptr [bp+0ah]
       mov es:[bp+0dh],ax
       add si,4
       add di,2
       add bp,16
       loop s
       
       mov  ax,4c00h
       int  21h

 code ends
 end start
tianxing9151
[第1楼]   [ 回复时间:2011-05-12 15:39 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2010-06-23 00:14
建议写上注释这样看起来会比较容易些~~
13697471313
[第2楼]   [ 回复时间:2011-05-23 23:19 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-04-24 22:44
你写的有点问题,发个你参考下
codesg segment
start:
mov ax,data      ;数据段地址
mov ds,ax
mov ax,table     ;栈段,写入段地址
mov es,ax
mov si,0
mov di,0
mov bp,0
mov cx,21
s:
mov ax,[si]
mov word ptr es:[di],ax   ;年低位字符写入栈内存  ,di用于换行 
mov ax,[si+2]
mov word ptr es:[di+2],ax   ;年高位字符写入栈内存  ,di用于换行

mov ax,[si+84]    ;年收入低位写入栈内存
mov word ptr es:[di+5],ax
mov dx,[si+86]    ;年收入高位写入栈内存
mov word ptr es:[di+7],dx

mov bx,[bp+168] 
mov word ptr es:[di+0ah], bx  ;人员写入栈内存

div word ptr es:[di+0ah]         ;得人均收入整数存于ax
mov word ptr es:[di+0dh],ax   ;人均收入存入栈内存

add di,16       ;准备写入下一行
add si,4        ;准备录入下一组字数据
add bp,2
loop s

mov ax,4c00h
int 21h

codesg ends
end start
rotapple
[第3楼]   [ 回复时间:2011-06-04 14:23 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:6
注册日期:2011-06-01 16:20
我发现很多同学都喜欢用bp

请注意,只要用了bp,就表示默认在ss栈内的偏移.
rotapple
[第4楼]   [ 回复时间:2011-06-04 14:24 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:6
注册日期:2011-06-01 16:20
不过如果用了前缀的话就没有问题.
rotapple
[第5楼]   [ 回复时间:2011-06-04 14:24 ]   [引用]   [回复]   [ top ] 
荣誉值:10
信誉值:6
注册日期:2011-06-01 16:20
但是不是好习惯哟.
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved