|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
assume cs:code, ds:data, ss:stack
data segment
;dw 0000007BH, 00003174H, 00000001H, 00000008H, 00000003H, 00000026H
dw 123, 12666, 1, 8, 3, 38
db 0
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
start: mov ax, data
mov ds, ax
mov ax, stack
mov ss, ax
mov sp, 10H
mov ax, 0B846H
mov es, ax ;显存地址
mov di, 0
mov cx, 6
mov si, 0
mov word ptr ds:[24], 10 ;mov bx, 10 ;作除数
call dtoc
mov ax, 4c00H
int 21H
dtoc: push cx
mov ax, [si]
mov dx, [si+2]
s: div word ptr ds:[24] ;div bx
call showstr
mov cx, ax
inc cx
loop s
pop cx
add si, 4
loop dtoc
ret
showstr: add dx, 30H
mov es:[di], dx
inc di
;add di, 2
ret
code ends
end start
有大佬知道我这个程序哪里有问题吗
这段程序在进行数字转字符串的时候使用了栈,但是没有将 SS(堆栈段) 赋给 ES(附加段寄存器)。因此可能会导致内存访问错误或异常。也缺少了定义 INT 21H 功能的作用/功能。
此外,变量名和注释显示的值不一致,也需要注意以上事项造成该问题,可能需要仔细检查并修改代码。
|
|