哎!一个打印输出纠结了一上午;
时间: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
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
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28