注册 登录
编程论坛 汇编论坛

重写实验7 求大虾指点

e0a 发布于 2014-03-11 13:33, 494 次点击
第3次写实验7  没有处理除法溢出   dd dw 数据不能正常显示  
求大虾帮助
程序代码:
assume cs:code

data segment
     db 21 dup ('1946')
     dd 21 dup (500)
     dw 21 dup (50)
data ends

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

stack segment
     db 32 dup (0)
stack ends

code segment
start:

;初始化
                     mov ax,data
                     mov ds,ax
                     mov ax,table
                     mov es,ax
                     mov ax,stack
                     mov ss,ax
                     mov sp,32

                     mov ax,0
                     mov bx,0
                     mov dx,0
                     mov si,0                        ; 字符 地址
                     mov di,0                        ; table 地址
                     mov cx,20

                     call line

                    mov ax,4c00h
                    int 21h

;行循环

line:                                                ;子程序1
                    push cx
                    push si
                    push si
                    push si
                    mov cx,2

                    call far ptr year

                    add di,3
                    mov cx,2

                    pop si

                    call money                      ; 这个不能正常显示

                    pop si
                    add di,3                        ; <--- 指向  雇员数
                    mov bx,ds:[si+42]
                    mov es:[di],bx
                    add di,3                        ; <--- di 指向 人均收入

                    div bx                          ; <--- 进行除法  没有处理除法溢出 divide overflow   ax存商
                    mov es:[di],ax
                    add di,3                        ; <--- 指向下一行

                    pop si
                    add si,4



                    pop cx
                    loop line

year:                                               ; 子程序2

                    mov ax,ds:[si]
                    mov es:[di],ax
                    add si,2
                    add di,2
                    loop year

                    ret

money:                                              ; 子程序3

                    mov ax,ds:[si+21]
                    push ax
                    mov es:[di],ax
                    add si,2
                    add di,2
                    loop money

                    pop dx
                    pop ax                          ; dx 存高16位   ax 存低16位
                    ret                          



code ends
end start



[ 本帖最后由 e0a 于 2014-3-11 13:34 编辑 ]
1 回复
#2
wp2319572014-03-15 08:08
要显示整型数据需要转化为字符型才可
1