鱼C论坛

 找回密码
 立即注册
查看: 1068|回复: 1

[已解决]汇编实验10

[复制链接]
发表于 2023-1-16 22:30:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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


有大佬知道我这个程序哪里有问题吗
最佳答案
2023-5-21 22:22:26
这段程序在进行数字转字符串的时候使用了栈,但是没有将 SS(堆栈段) 赋给 ES(附加段寄存器)。因此可能会导致内存访问错误或异常。也缺少了定义 INT 21H 功能的作用/功能。
此外,变量名和注释显示的值不一致,也需要注意以上事项造成该问题,可能需要仔细检查并修改代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-5-21 22:22:26 | 显示全部楼层    本楼为最佳答案   
这段程序在进行数字转字符串的时候使用了栈,但是没有将 SS(堆栈段) 赋给 ES(附加段寄存器)。因此可能会导致内存访问错误或异常。也缺少了定义 INT 21H 功能的作用/功能。
此外,变量名和注释显示的值不一致,也需要注意以上事项造成该问题,可能需要仔细检查并修改代码。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 13:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表