在下面的汇编语言中加入一段,使输出的二进制没有前面无用的0!急求,在线等
CODESEGMENTASSUMECS:CODESTART:MOVBX,20MOVCX,16NEXTCHAR:ROLBX,1MOVDL,BLANDDL,1ORDL,30H...
CODE SEGMENT
ASSUME CS:CODE
START:
MOV BX,20
MOV CX,16
NEXTCHAR:
ROL BX,1
MOV DL,BL
AND DL,1
OR DL,30H
MOV AH,2
INT 21H
LOOP NEXTCHAR
FINISH:
MOV DL,'B'
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START 展开
ASSUME CS:CODE
START:
MOV BX,20
MOV CX,16
NEXTCHAR:
ROL BX,1
MOV DL,BL
AND DL,1
OR DL,30H
MOV AH,2
INT 21H
LOOP NEXTCHAR
FINISH:
MOV DL,'B'
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START 展开
1个回答
展开全部
程序写好,逻辑上应该没什么问题,加的部分做了注释,若满意请及时采纳,有问题的话请追问
CODE SEGMENT
ASSUME CS:CODE
START:
MOV BX,20
MOV CX,16
NEXTCHAR:
ROL BX,1
MOV DL,BL
AND DL,1
OR DL,30H
CMP DL,30H ;是'0'?
JNZ EQU30 ;不是,转写标记
CMP WORD PTR [yes],1 ;是'0',遇到过'1'吗?
JNZ TONEXT ;未遇到,直接跳过显示
JMP EQU31 ;遇到,转显示
EQU30:
MOV BYTE PTR DS:[yes],1 ;做遇到"1"得标记
EQU31:
MOV AH,2
INT 21H
TONEXT:
LOOP NEXTCHAR
FINISH:
MOV DL,'B'
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
yes DB 0
END START
CODE SEGMENT
ASSUME CS:CODE
START:
MOV BX,20
MOV CX,16
NEXTCHAR:
ROL BX,1
MOV DL,BL
AND DL,1
OR DL,30H
CMP DL,30H ;是'0'?
JNZ EQU30 ;不是,转写标记
CMP WORD PTR [yes],1 ;是'0',遇到过'1'吗?
JNZ TONEXT ;未遇到,直接跳过显示
JMP EQU31 ;遇到,转显示
EQU30:
MOV BYTE PTR DS:[yes],1 ;做遇到"1"得标记
EQU31:
MOV AH,2
INT 21H
TONEXT:
LOOP NEXTCHAR
FINISH:
MOV DL,'B'
MOV AH,2
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
yes DB 0
END START
追问
yes DB 0
这行什么意思啊?编译时有错误啊
追答
yes是一个变量,0表示没遇到1,1表示遇到1
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询