汇编的输出改错

来源:百度知道 编辑:UC知道 时间:2024/06/03 18:33:47
下面程序想实现输入一行字符串,然后原样输出,可是cx的赋值不对,,怎么给cx赋值呢。。?》?
DATAS SEGMENT
string db 81
db ?
db 80 dup(?)

;此处输入数据段代码
DATAS ENDS

STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea dx,string
mov ah,0ah
int 21h
mov dl,0ah
mov ah,2h
int 21h
mov dl,0dh
mov ah,2h
int 21h
mov si,offset string

add si,01h;
mov cx,[si]; 这里有问题,cx里面赋值不正确,就是想把cx里面赋值为字符的个数
add si,01h;
next:
mov dl,[si]
mov ah,2
int 21h
inc si
LOOP next;此处输入代码段代码
MOV AH,4CH
INT 21H
CODES ENDS
END START
不行。。。直接语法错误了,,当word ptr没有语法错误,结果还是错,,

lea dx,string
mov ah,0ah
int 21h
mov dl,0ah
mov ah,2h
int 21h
mov dl,0dh
mov ah,2h
int 21h
mov si,offset string

add si,01h;
mov ch,00h; 因为CX是16位寄存器,而字符的个数是8位的,所以要分开
mov cl,[si]; 高位送00H,低位送数字
add si,01h;
next:
mov dl,[si]
mov ah,2
int 21h
inc si
LOOP next;此处输入代码段代码
MOV AH,4CH
INT 21H

mov cx,byte ptr[si]