. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->数据处理的两个基本问题
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验 7 --------------------准确答案,, 自己编写..经调试验证~~~~~~~~~~~~~~~~~~~~~~~~~~~~~  [已解决] 回复[ 2次 ]   点击[ 510次 ]  
stop1204
[帖 主]   [ 发表时间:2013-05-10 02:41 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
今天看了第八章,用了一晚上搞完-.- 这个程序想了2个钟头没了.没参考 
栈段的我不想尝试了, 休闲时间,
_______________________________
assume cs:codesg 
data segment 
        db '1975','1976','1977','1978','1979','1980','1981','1982','1983'        ;1个年份占4字节 
        db '1984','1985','1986','1987','1988','1989','1990','1991','1992' 
        db '1993','1994','1995';以上表示21年的21个字符串        ;data:53        84个字节 
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514        ;1个数据占4字节 
        dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000 
        ;以上表示21年公司总收入的21个dword型数据                ;data:A7  ;21*4(84)+84=168个字节单元 
        dw 3, 7, 9, 13, 28, 38, 130, 220, 476, 778, 1001, 1442, 2258, 2793, 4037, 5635, 8226  
        dw 11542, 14430, 15257, 17800        ;1个数据占2个字节 
        ;以上表示21年公司雇员人数的21个word型数据                ;data:D1 ;168+21*2(42)=210个字节单元 
data ends 
table segment 
        db 21 dup ('year summ ne??') 
table ends 
codesg segment 
start:        mov ax,data 
        mov ds,ax 
        mov ax,table 
        mov es,ax 
        mov bx,0 
        mov si,0 
        mov di,0 
        mov cx,21 
s:         
        mov ax,[si] 
        mov es:[bx],ax 
        mov ax,[si].2 
        mov es:[bx].2,ax 


        mov ax,[si].84 
        mov es:[bx].5,ax 
        mov ax,[si].86 
        mov es:[bx].7,ax 

        mov ax,[di].168 
        mov es:[bx].0AH,ax 

; 以下为什么要用到 DX ,    因为收入数据超过单个寄存器所能存放的数值上限,需要用2个寄存器配合,即 AX.DX       被除数 DS:AX      
;因为被除数是32位      所以除数必须是16位的, 则要指定内存单元为word字型  
        mov ax,es:[bx].5                
        mov dx,es:[bx].7 
        div word ptr [di].168 
        mov es:[bx].0DH,ax               ; DX存放余数  AX存放商

        add bx,10H 
        add di,2 
        add si,4 
        loop s 
        mov bx,0 
        mov cx,21 
s0:        mov byte ptr [bx].5,20H                ;空格  或 mov al,20H  mov [bx].4,al 
        mov byte ptr [bx].10,20H                ;必须放在s循环条件后,不然将覆盖dd-dw定义的数据 
        mov byte ptr [bx].13,20H 
        mov byte ptr [bx].16,20H 
        add bx,10h 
        loop s0 

        mov ax,4c00h 
        int 21h 
codesg ends 
end start
stop1204
[第1楼]   [ 回复时间:2013-05-11 08:09 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
s0:        mov byte ptr [bx].5,20H                ;空格  或 mov al,20H  mov [bx].4,al  
        mov byte ptr [bx].10,20H                ;必须放在s循环条件后,不然将覆盖dd-dw定义的数据  
        mov byte ptr [bx].13,20H  
        mov byte ptr [bx].16,20H  

打错了,,,     原来是  要加es的 
_____________________________________________________

s0:        mov byte ptr es:[bx].4,20H                ;空格  或 mov al,20H  mov [bx].4,al
        mov byte ptr es:[bx].9,20H                ;必须放在s循环条件后,不然将覆盖dd-dw定义的数据
        mov byte ptr es:[bx].12,20H
        mov byte ptr es:[bx].15,20H
stop1204
[第2楼]   [ 回复时间:2013-05-13 08:08 ]   [引用]   [回复]   [ top ] 
荣誉值:424
信誉值:0
注册日期:2013-04-08 10:06
此贴由 贴主 于 [ 2013-05-13 08:08 ] 结贴。 结贴原因:问题已解决
得分情况:
此问题已结贴!
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved