求教一个汇编的简单题目
题目大概是将一个字符串存放在显存中然后输出,同时字符串有颜色。
以下是我编写的代码,但是总是运行不出来。后来通过debug单步执行的时候发现无论给es:【di】赋什么值,结果在内存中查看的es:[di]中的值任然没有变化。求解 。拜托了~各位。。。。
DATA SEGMENT
BUFF1 DB 'LIUFEISHIH'
BUFF2 DB 169
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,0B800H
MOV ES,AX
XOR BX,BX
MOV BL,OFFSET BUFF1
MOV SI,OFFSET BUFF2
MOV DI,00EBH
MOV CX,5
LIUFEI: MOV AL,DS:[BX]
MOV ES:[DI],AL
INC DI
MOV AL,DS:[SI]
MOV ES:[DI],AL
INC DI
INC BL
LOOP LIUFEI
MOV AX,4CH
INT 21H
CODE ENDS
END START[color=#FF0000][/color]
[解决办法]
没那么复杂吧。。。
;This Program Compiled Sucess by Masm 6.15assume cs:code,ds:datadata segment_str db 'How are you!'data endscode segmentstart: mov ax,data ;指定DS mov ds,ax mov ax,0b800h ;指定ES mov es,ax mov si,offset _str ;获取字符串首地址 mov di,12*160+2*40 ;显存首地址,在12行40列 mov cx,lengthof _str ;字符串长度 mov ah,10h ;颜色值show: mov al,[si] ;开始挨个传送 mov es:[di],ax inc si ;指向下一个字符 add di,2 ;指向显存下一个位置 loop show mov ah,4ch ;返回DOS,楼主这里打错啦 int 21hcode endsend start