首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

下列程序哪里出错了,如何不能正常运行

2013-10-14 
下列程序哪里出错了,怎么不能正常运行assume cs : code , ds : datadata segment db 9 , 8 , 7 , 4 ,2,0db

下列程序哪里出错了,怎么不能正常运行
assume cs : code , ds : data

data segment

 db 9 , 8 , 7 , 4 ,   2,0
db '///:: '

data ends

stack segment
dw 8 dup(0)
stack ends

code segment
start:
mov ax , data
mov ds , ax

mov ax , stack
mov ss , ax
mov sp , 10F

mov si , 0 
mov di , 6

mov ax , 0B800h
mov es , ax

mov cx , 6

l:mov al , [si]
call trans

mov es:[bx] , ah
mov es:[bx+2] , al
mov al ,ds:[di]
mov es:[bx+4] , al
inc si
inc di
add bx , 6

loop l


;jmp short start //当把注释去掉之后就会出错,怎么回事呢
mov ax , 4c00h
int 21h


trans:
push cx
out 70h , al
in al , 71h

mov ah , al
mov cl , 4
shr ah , cl
and al , 00001111b

add ah , 30h
add al , 30h

pop cx

ret

code ends
end start
汇编语言 编程错误
[解决办法]
没有给 bx 置初值吧,如给 si 置 0 般地也给 bx 置 0 应该就可以了。
jmp start 其实也没必要,只要 jmp 到给 si 置 0 处就可以了。
一直循环的话,最后有个退出机制,比如检测按个什么键就结束。

热点排行