|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 x87648510 于 2013-7-27 13:02 编辑
把代码修改了 ,生成exe 都正常 ,也可以执行,但是执行之后怎么一点反应都没有啊 这是肿么回事啊 大神们可以帮我看看这段代码吗? 我实在是检测不出哪里有问题 ,很是困惑啊
- assume cs:code ,ds:data,ss:stack
- data segment
- db 'welcome to masm!' ;设置ds中的内容
- db 02h,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:[bx] ;把ds中的值取出放入al中,字的内容
- mov es:[si],al ;把al里面的字传递到es中
- mov al,ds:[di+10h] ;此次两句为传递颜色
- mov es:[si+1],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
复制代码
|
|