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

汇编 宏库的问题

longxies 发布于 2007-12-29 17:30, 1261 次点击
如下程序为将一个双字数转换为十进制数并显示的程序
sy30.asm为只数ax,dx并调用宏库md.lib的程序
md.lib为宏库文件
在md.lib文件中有个问题,语句mov ds:[si],dl 它将dl存那里去了?我把它改为cs段照常运行为什么?


sy30.asm   

include c:\masm\md.lib
DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

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

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    mov ax,0h
    mov dx,0001h
    divdw ax,dx
    ;此处输入代码段代码
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START


md.lib

divdw macro x,y  
 
    mov si,0
    mov ax,x
    mov dx,y
    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        ;数据dl存那里去了?改为mov cs:[si],dl 照常运行


    pop dx
    pop bx
    inc si
    cmp ax,0
    jne lop
    mov ax,0b803h
    mov es,ax
    mov di,0
    mov cx,si
    dec si


s1: mov al,ds:[si]       ;改为mov al,cs:[si] 照常运行


   
    add al,30h
    mov byte ptr es:[di],al
    inc di
    inc di
    dec si
    loop s1
endm
0 回复
1