亦有人 发表于 2023-1-16 22:30:05

汇编实验10

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:, 10                                ;mov bx, 10                                ;作除数
               
                call dtoc
               
                mov ax, 4c00H
               
                int 21H
               
dtoc:        push cx

                mov ax,

                mov dx,
               
s:                div word ptr ds:                                        ;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:, dx
               
                        inc di

                        ;add di, 2
               
                        ret
               
code ends

end start


有大佬知道我这个程序哪里有问题吗

sfqxx 发表于 2023-5-21 22:22:26

这段程序在进行数字转字符串的时候使用了栈,但是没有将 SS(堆栈段) 赋给 ES(附加段寄存器)。因此可能会导致内存访问错误或异常。也缺少了定义 INT 21H 功能的作用/功能。
此外,变量名和注释显示的值不一致,也需要注意以上事项造成该问题,可能需要仔细检查并修改代码。
页: [1]
查看完整版本: 汇编实验10