是不是rol语句下面不应该再有其他的标志语句?? 我写了一个16进制转换成2进制并且输出的程序:(错误发生的地方已经标注!) data segment array db 4 dup(0) temp db ? count_1 db 4 count_2 db 8 str_0 db 'This program can change hex_num to bin_num:','$' str_I db 'You can enter 4 bits:','$' str_2 db 'You have entered 4 bits' data ends code segment assume cs:code,ds:data start: mov ax,data mov ds,ax mov si,0 mov cx,4 lea dx,str_0 mov ah,9 int 21h mov dl,0ah mov ah,2 int 21h lea dx,str_I mov ah,9 int 21h Label_0: mov ah,1 int 21h ;鉴定是不是超出10 cmp al,3ah jc Label_0_1 sub al,37h jmp Label_0_2 Label_0_1 : sub al,30h; Label_0_2 : mov array[si],al inc si dec cx jnz Label_0 ;sign to the end of entering mov dl,0ah mov ah,2 int 21h mov dl,0ah mov ah,2 int 21h int 21h ;输入四位十六位数完毕,接下来对四个数字依次进行转换 mov si,0 Label_1: mov cx,4 mov al,array[si] rol al,4;这个地方就是导致错误发生的地方,去掉此句的话就没有问题了! mov temp,al Label_2:;这个标志句被提示improper operand type mov al,temp rol al,1 mov temp,al and al,01h add al,30h mov dl,al mov ah,2 int 21h dec cx jnz Label_2 inc si dec count_1 mov dl,1ch mov ah,2 int 21h jnz Label_1 mov ah,4ch int 21h code ends end start 但是如果去掉那一句,结果是0000-0000-0000-0000了,不是预想中的结果了 error:improper operand type |