请看下这个汇编程序怎了了
程序代码:
DATAS SEGMENT SHU DB -122,23,54,68,78,98;此处输入数据段代码 N EQU $-SHU DATAS ENDS STACKS SEGMENT DW 256 DUP(?) TOP LABEL WORD;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS XIANSHI PROC CMP BL,9 JBE XIAO ADD BL,7 XIAO: ADD BL,30H;一定注意是30H MOV DL,BL;显示出BL中的字符 MOV AH,2 INT 21H RET XIANSHI ENDP;子程序结束 START: MOV AX,DATAS MOV DS,AX MOV AX,STACKS MOV SS,AX LEA SP,TOP ;此处输入代码段代码 LEA DI,SHU MOV CX,N REPET: PUSH CX MOV AL,[DI] PUSH AX;先把AX暂存一下,下面INT 21会破坏 AND AL,AL JNS ZHENG MOV DL,'-';负数,先把符号显示出来 MOV AH,02H INT 21H POP AX NEG AL ZHENG: CMP AL,99 JBE LIANG CBW;三位数,先把百位显示出来,假设128 MOV BH,100 DIV BH;百位是商1 MOV BL,AL;商放入BL PUSH AX;暂存余数 CALL XIANSHI POP AX;余数出来 MOV AL,AH;AH保存是余数28 CBW MOV BH,10 DIV BH MOV BL,AL;商是2十位 PUSH AX CALL XIANSHI POP AX MOV BL,AH;余数8是个位 CALL XIANSHI MOV DL,',' MOV AH,2 INT 21H;显示"," JMP XIA LIANG:;两位数 CBW MOV BL,10 DIV BL MOV BL,AL;商——十位 MOV CL,AH;余数——个位 CALL XIANSHI;显示十位 MOV BL,CL CALL XIANSHI;显示个位 ;到此一个数显示完毕 MOV DL,',' MOV AH,2 INT 21H;显示"," XIA: INC DI POP CX LOOP REPET; 去掉这一句就一切正常?请问怎么回事 MOV AH,4CH INT 21H CODES ENDS END START我想要把定义的数字都显示出来,但是在循环处有问题,请高手帮忙看看,多谢!
怎么没有人回复呀
[ 本帖最后由 jy1075518049 于 2012-11-14 15:11 编辑 ]