|
主题 : : 实验九,请教我调试出错,我看不出来 [待解决] |
回复[ 3次 ]
点击[ 359次 ] | |
|
|
|
|
[帖 主]
[ 发表时间:2008-09-15 16:18 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-09-02 09:38 |
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
mov cx,16
s:mov ah,02h
mov al,[bx]
mov es:[bx],ax
mov ah,24h
mov al,[bx]
mov es:[bx+0A0H],ax
MOV ah,71h
mov al,[bx]
mov es:[bx+140h],ax
INC BX
loop s
mov ax,4c00h
int 21
code ends
end start | | |
|
|
|
|
[第1楼]
[ 回复时间:2008-09-17 20:06 ]
[引用]
[回复]
[ top ] | |
荣誉值:56
信誉值:14
注册日期:2008-08-20 11:21 |
有2个错误:
1.int 21 ,改为int 21H ,这个是粗心吧,呵呵o(∩_∩)o
2.要显示一个字符,是占2个字节的,地位存放ascii码.高位存放字符属性(看得出这个你早就知道了...),而你用的
es:[bx],es:[bx+0A0H],es:[bx+140h],bx每次只加1,是不是出问题了?必须加2才行(2个字节嘛,+1的话很多东西就重叠了),所以呢,修改之后如下:
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov bx,0
mov cx,16
s:mov ah,02h
mov al,[bx]
mov word ptr es:[si],ax ;;;;;;;;;;;;这里用si来指向,至于word ptr 可以不加;;;;;;;;;
mov ah,24h
mov al,[bx]
mov word ptr es:[si+0A0H],ax
MOV ah,71h
mov al,[bx]
mov word ptr es:[si+140h],ax
INC BX
add si,2 ;;;;;;;;;;;;;;;;;;;呵呵~这里+2;;;;;;;;;;;;;;;;;;;;;;;
loop s
mov ax,4c00h
int 21h ;;;;;;;;;;;;;;;;;;这个...你已经知道了...;;;;;;;;;;;;;;;;;;
code ends
end start | | |
|
|
|
|
[第2楼]
[ 回复时间:2008-09-22 10:57 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-09-02 09:38 |
|
|
|
|
|
[第3楼]
[ 回复时间:2008-09-22 10:58 ]
[引用]
[回复]
[ top ] | |
荣誉值:0
信誉值:0
注册日期:2008-09-02 09:38 |
|
|