x87648510 发表于 2013-7-27 11:48:47

关于王爽汇编第二版的实验9的问题,求大神指教

本帖最后由 x87648510 于 2013-7-27 13:02 编辑

把代码修改了 ,生成exe 都正常 ,也可以执行,但是执行之后怎么一点反应都没有啊这是肿么回事啊大神们可以帮我看看这段代码吗? 我实在是检测不出哪里有问题 ,很是困惑啊

assume cs:code ,ds:data,ss:stack
data segment
db 'welcome to masm!'   ;设置ds中的内容
db02h,24h,71h                  ;设置颜色               
data ends

stack segment

dw 16 dup(0)      ;设置栈的大小
stack ends

code segment
;初始化
start:mov ax,data      ;
          mov ds,ax
          mov ax,stack
          mov ss,ax
          mov sp,10h
          mov ax,0b872h   ;把显存的是11行中间的地址放入
          mov di,0            ;用来做颜色的偏移
      ;把字移入内存中
          mov cx,3         ;要显示三行字 这里做三次循环
s3:push cx         ;把三次循环的cx压入栈中
    push ax                              ;把ax中的现存地址压入栈中,因为后面需要用到ax
      mov es,ax                        ;把显存的地址传递给es
         mov bx,0         ;bx用来做ds第一行'welcome to masm!'的偏移

         mov si,0         ;si用来做显存地址的偏移
         mov cx,10         ;因为要赋值10次这里做一个循环
         
s2:push cx         
         mov al,ds:       ;把ds中的值取出放入al中,字的内容
         mov es:,al         ;把al里面的字传递到es中
         mov al,ds:   ;此次两句为传递颜色
         mov es:,al
         inc bx                  
         add si,2
         pop cx
loop s2         


    inc di            ;没输入一句就换一种颜色
      
      pop ax                ;把ax的值取出 进行相加之后再赋值给es
      add ax,0ah
      pop cx
loop s3
mov ax,4c00h
int 21h
code ends
end start

福禄娃娃 发表于 2013-7-27 20:50:27

因为程序运行速度很快,一闪而过了,可以在debug单步跟踪看到结果,或者在emu8086中运行也能看到结果。以下还有两种方法:
在程序结束之前加:       
mov ah,01h        ;wait any key
int 21h       
它就会等你输入任何字符后才会完全程序运行.
或者添加 jmp $

x87648510 发表于 2013-7-27 22:29:16

福禄娃娃 发表于 2013-7-27 20:50 static/image/common/back.gif
因为程序运行速度很快,一闪而过了,可以在debug单步跟踪看到结果,或者在emu8086中运行也能看到结果。以下 ...

:lol这个我了32位XP运行 正确了在64 win7上运行不了 纠结虚拟机也没效果

忘忧的记忆 发表于 2013-7-27 22:56:17

福禄娃娃 发表于 2013-7-27 20:50 static/image/common/back.gif
因为程序运行速度很快,一闪而过了,可以在debug单步跟踪看到结果,或者在emu8086中运行也能看到结果。以下 ...

恩,这个学习了
页: [1]
查看完整版本: 关于王爽汇编第二版的实验9的问题,求大神指教