+ -
当前位置:首页 → 问答吧 → 哎!一个打印输出纠结了一上午;

哎!一个打印输出纠结了一上午;

时间:2011-06-18

来源:互联网

昨晚半夜写的代码;今天debug了一上午才正式搞定;按书上输出了"welcome to masm!",虽然实现了要求但是感觉我在寄存器的用法上总觉的有点乱;不知道在程序中什么时候用什么寄存器有什么规定或者规范吗?像我刚开始是用di存储颜色属性的地址 di = 10h,结果在用的时候不知道为什么,明明是 ah = [di],可是编译后在debug里看不到di=10h的机器码;而ah = [di]也不在我源码本身的位置而是在al = [si]下面而且机器码是 ah = 10h 是直接把di的值给了ah ;结果我把di换成bp竟然就可以了;不知道di寄存器的用法有什么问题吗??还有那个用dx临时存储cx的值有什么忌讳吗,感觉不是很好;

assume cs:codesg

data segment
db 'welcome to masm!'

db 02h,24h,71h
data ends

codesg segment

start: mov ax,data
mov ds,ax

mov ax,0b872h
mov es,ax

mov bx,0
mov bp,10h
mov cx,3

s: mov dx,cx

mov ah,ds:[bp]
mov si,0
mov di,0
mov cx,10h

s0: mov al,[si]
mov es:[bx][di],ax

inc si
add di,2
loop s0

inc bp
add bx,0a0h
mov cx,dx
loop s

mov ax,4c00h
int 21h

codesg ends

end start

作者: lc316546079   发布时间: 2011-06-18

刚开始都这样。si,di,bp的专门用途,后面的教程会讲到的。

作者: masmaster   发布时间: 2011-06-18