| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 766 人关注过本帖
标题:多模块连接程序的 参数传递问题
只看楼主 加入收藏
longxies
Rank: 1
等 级:新手上路
帖 子:113
专家分:0
注 册:2007-11-14
收藏
 问题点数:0 回复次数:0 
多模块连接程序的 参数传递问题
如以下两个程序:sy29.asm和sy28.asm,用存储器传递参数对吗?
(运行结果:不能传递),为什么

sy29.asm:       ;将dx,ax置数,并存入0:200h和0:202h两个字单元中,传递参数

extrn divdw:far
DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
main proc far    
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    push ds
    mov ax,0
    push ax
   
    MOV AX,DATAS
    MOV DS,AX

    mov ax,0ffffh
    mov dx,0ffffh

    mov bx,0
    mov es,bx
    mov di,200h
    mov word ptr es:[di],ax
    inc di
    inc di
    mov word ptr es:[di],dx

    call far ptr divdw       ;调用divdw

    ret
main endp   
CODES ENDS
    END START




sy28.asm:                 ;从0:200h和0:202h中取出ax,dx并运算,转换为十进制数并显示


public divdw
DATAS SEGMENT
    db 100 dup(?)            ;储存转换后的十进制数
DATAS ENDS

STACKS SEGMENT
STACKS ENDS

CODES SEGMENT
divdw proc far
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov si,0

    mov ax,0           ;从0:200h和0:202h中取出ax,dx
    mov es,ax
    mov di,200h

    mov ax,es:[di]
    inc di
    inc di
    mov dx,es:[di]

    mov cx,10           ;除数


lop:push bx             ;运算并储存
    mov bx,ax
    mov ax,dx
    mov dx,0
    div cx
    push ax
    mov ax,bx
    div cx
    mov ds:[si],dl
    pop dx
    pop bx
    inc si
    cmp ax,0
    jne lop


    mov ax,0b800h         ;显示
    mov es,ax
    mov di,0
    mov cx,si
    dec si
s1: mov al,ds:[si]   
    add al,30h
    mov byte ptr es:[di],al
    inc di
    inc di
    dec si
    loop s1


    ret
divdw endp   
CODES ENDS
    END START
搜索更多相关主题的帖子: 模块 参数 
2007-12-29 16:46
快速回复:多模块连接程序的 参数传递问题
数据加载中...
 
   



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

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