| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 3813 人关注过本帖
标题:王爽汇编课程设计 1-------------练技术
只看楼主 加入收藏
Explorerlxz
Rank: 9Rank: 9Rank: 9
来 自:zzu
等 级:蜘蛛侠
威 望:4
帖 子:302
专家分:1032
注 册:2013-4-24
结帖率:100%
收藏
 问题点数:0 回复次数:5 
王爽汇编课程设计 1-------------练技术
图片附件: 游客没有浏览图片的权限,请 登录注册

程序代码:
assume cs:codesg
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'
    ;以上是表示21年21个字符串 

    dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
    dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
    ;以上是表示21年公司总收入的21个dword型数据

    dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
    dw 11542,14430,15257,17800
    ;以上是表示21年公司雇员人数的21个word型数据
data ends

table segment
    db 21 dup('year summ ne ?? ')
table ends

moment segment
    db 'year      '
    db 'su        '
    db 'e         '
    db '?         '
moment ends

codesg segment
start:    mov ax,data
    mov ds,ax
    mov si,0

    mov ax,table
    mov es,ax
    mov di,0

    mov bx,0a8h

    mov cx,21

ta_ble:    mov ax,[si]    ;year
    mov es:[di],ax
    mov ax,[si+2]
    mov es:[di+2],ax

    mov ax,[si+54h]    ;income
    mov es:[di+5],ax
    mov dx,[si+56h]
    mov es:[di+7],dx

    div word ptr [bx]    ;average income
    mov es:[di+0dh],ax

    mov ax,[bx]    ;number of employers
    mov es:[di+0ah],ax

    add bx,2
    add si,4
    add di,10h
    loop ta_ble
;===============================================
;此时数据已经全部存放到table段中,下面的代码实现将
;table段中的数据转化成字符串,格式化输出到显示器上
;table位于附加段,moment位于数据段
;===============================================
    mov ax,table
    mov es,ax
    mov di,0

    mov ax,moment
    mov ds,ax
    mov si,0

    mov cx,21
p:
    mov ax,es:[di]    ;year
    mov [si],ax
    mov ax,es:[di+2]
    mov [si+2],ax

    add di,5
    add si,10

    mov ax,es:[di]    ;income
    mov dx,es:[di+2]
    call ddtoc;;;;;;;;;调整顺序时出错
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;断点1
    add di,5
    add si,10

    mov ax,es:[di]    ;number of employers
    mov bx,si
    call dtoc

    add di,3
    add si,10

    mov ax,es:[di]    ;average income
    mov bx,si
    call dtoc

    add di,3
    mov si,0

    call print_data
    loop p

    mov ax,4c00h
    int 21h
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
;-------------------------------------
print_data:
    push es
    push si
    push di
    push cx
    push bx
    push ax
    mov ax,0B800h
    mov es,ax

    mov ah,cl
    mov al,25
    sub al,ah;al表示行号的偏移地址
    mov ah,0
    mov bl,160
    mul bl
    mov di,ax

    mov cx,40
begin:    
    mov al,[si]
    mov es:[di],al
    mov byte ptr es:[di+1],02
    inc si
    add di,2
    loop begin

    pop ax
    pop bx
    pop cx
    pop di
    pop si
    pop es
    ret
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;dtoc函数:bx表示字符串起点,si表示字符串的终点
;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
dtoc:    
    push si
    push dx
    push cx
    push bx
    push ax

div_10:    mov dx,0;循环s用于得到所求数字每个字符,但是顺序与实际显示的相反
    mov cx,10
    div cx
    add dl,30h
    mov [si],dl
    inc si
    mov cx,ax
    inc cx
    loop div_10
    
    dec si
go_on:    mov al,[bx];循环go_on用于调整字符的顺序
    mov cl,[si]
    mov [bx],cl
    mov [si],al
    dec si
    inc bx
    cmp si,bx
    ja go_on

  over:    pop ax
    pop bx
    pop cx
    pop dx
    pop si
    ret
;--------------------------------------------------------------------
;ddtoc子程序实现将dword型数据转化成字符串
;--------------------------------------------------------------------
ddtoc:
    push si
    push dx
    push cx
    push bx
    push ax

    mov bx,si

ddt:
    mov cx,10
    call divdw
    add cl,30h
    mov [si],cl
    inc si
    mov cx,dx
    jcxz half
    mov cx,ax
    inc cx
    loop ddt
half:
    call dtoc

    pop ax
    pop bx
    pop cx
    pop dx
    pop si
    ret
;.....................................................
;divdw结果中高位在dx,低位在ax,余数在cx
;.....................................................
divdw:    
    push di
    push bx

    mov bx,ax;bx暂存数据低位
    mov di,dx;di暂存数据高位

    mov ax,dx
    mov dx,0
    div cx
    push ax;高位的商入栈

    mov ax,bx
    div cx
    mov cx,dx
    pop dx

    pop bx
    pop di
    ret
;\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    
codesg ends
end start
搜索更多相关主题的帖子: 技术 课程 
2014-06-07 11:09
Explorerlxz
Rank: 9Rank: 9Rank: 9
来 自:zzu
等 级:蜘蛛侠
威 望:4
帖 子:302
专家分:1032
注 册:2013-4-24
收藏
得分:0 
之前子程序设计不合理导致这次写程序很不顺利,不过经过改写,现在解决除法溢出子程序,数据转化成字符串子程序可移植性都大大增强了!自我感觉调试程序的技术也有所上升,感觉以后用OD应该会更有感觉,加油
2014-06-07 11:15
michaelHeave
Rank: 2
来 自:水泊梁山
等 级:论坛游民
帖 子:7
专家分:11
注 册:2014-2-12
收藏
得分:0 

Michael:我不抽烟,我不喝酒,然后我喜欢跟小朋友在一起
2014-06-27 09:42
hu9jj
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:红土地
等 级:贵宾
威 望:400
帖 子:11857
专家分:43421
注 册:2006-5-13
收藏
得分:0 
这就是水平提高的表现。

活到老,学到老!http://www.(该域名已经被ISP盗卖了)E-mail:hu-jj@
2014-07-01 06:54
zhu224039
Rank: 8Rank: 8
等 级:贵宾
威 望:17
帖 子:862
专家分:792
注 册:2012-7-29
收藏
得分:0 

very good

我要成为嘿嘿的黑客,替天行道
2014-07-02 02:50
快速回复:王爽汇编课程设计 1-------------练技术
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.032271 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved