鱼C论坛

 找回密码
 立即注册
查看: 2070|回复: 0

我的机器是肿么了。。为啥程序没有问题,就是不在屏幕上显示呢。。

[复制链接]
发表于 2012-4-10 22:48:38 | 显示全部楼层 |阅读模式

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

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

x
做了汇编实验九,不能在屏幕上显示,开始以为是我写错了,又到网上找了答案,但是还是不能显示,进入debug中调试时却看到在屏幕上显示了。现在做实验12,先不说不能在屏幕上显示,安装完0号中断后,调试写的那个除法溢出程序,还是和以前一样,又用网上下的答案中的程序运行后还是一个结果,是我的机器的问题吗??下面是我写的源程序。。
assume cs:codesg
codesg segment
start:   mov ax,cs   ;定位到do0程序处
     mov ds,ax
     mov si,offset do0
     
     mov ax,0h   ;定位到安全的内存空间
     mov es,ax
     mov di,200h
     
     mov cx,offset do0end - offset do0 ;cx长度
     cld
     rep movsb
     
     mov ax,0     ;设置中断向量表
     mov es,ax
     mov word ptr es:[0*4],200h
     mov word ptr es:[0*4+2],0h
     mov ax,4c00h
     int 21h
   
do0:   jmp do0start
     db 'welcome to masm!'
do0start:  mov ax,cs
     mov ds,ax
     mov si,202h
     
     mov ax,0b800h
     mov es,ax
     mov di,160*12+36*2
   
     mov cx,16
s:    mov al,[si]
     mov es:[di],al
     inc si
     add di,2
     loop s
   
     mov ax,4c00h
     int 21h
   
do0end:   nop
codesg ends
end start

为了确定那个答案是否正确,这里也贴出来。。。
assume cs:code
code segment
start:  mov ax,cs
        mov ds,ax
        mov si,offset do0               ;设置ds:si指向源地址

        mov ax,0
        mov es,ax
        mov di,200h                     ;设置es:di指向目标地址

        mov cx,offset do0end-offset do0 ;设置cx为传输长度

        cld                             ;设置传输方向为正
        rep movsb

        mov ax,0
        mov es,ax
        mov word ptr es:[0*4],200h
        mov word ptr es:[0*4+2],0       ;设置中断向量表
        
        mov ax,4c00h
        int 21h

do0:    jmp short do0start
        db 'divide error!'

do0start:mov ax,cs
         mov ds,ax
         mov si,202h                    ;设置ds:si指向字符串

         mov ax,0b800h
         mov es,ax
         mov di,12*160+34*2             ;设置es:di指向显存空间的中间位置

         mov cx,13                      ;设置cx为字符串长度
s:       mov al,[si]
         mov es:[di],al
         inc si
         add di,2
         loop s

         mov ax,4c00h
         int 21h

do0end:  nop
code ends
end start

这个是除法溢出代码。
assume cs:codesg
codesg segment
start: mov ax,1000h
   mov bh,1h
   div bh
   
   
codesg ends
end start

这个是我在屏幕上不能显示,但是能在debug时显示的代码:
assume cs:codesg
data segment
db 'welcome to masm!'
db  21h
data ends
codesg segment
start:   
     mov ax,data
     mov ds,ax
     mov si,0
     mov bx,10h
     
     mov ax,0b800h
     mov es,ax
     mov di,160*12+36*2
   
     mov cx,16
s:    mov al,[si]
     mov es:[di],al
     mov al,[bx]
     mov es:[di+1],al
     inc si
     add di,2
     loop s
   
     mov ax,4c00h
     int 21h
codesg ends
end start   

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-20 00:38

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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