马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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
|