有个汇编子程序
ASC_BINPROCINCCOUNTAMOVCX,COUNTAMOVAX,0MOVBX,10LEASI,ABLOOP01:MOVDL,[SI];ANDDL,0FHMOV...
ASC_BIN PROC
INC COUNTA
MOV CX,COUNTA
MOV AX,0
MOV BX,10
LEA SI,AB
LOOP01: MOV DL,[SI] ;
AND DL,0FH
MOV [SI],DL
MUL BX
MOV DL,[SI]
MOV DH,0
ADD AX,DX
INC SI
LOOP LOOP01
开始时countA=3 si-si+2 保存着由键盘输入的123
LEA SI,AB 是干嘛用的还有 MOV DL,[SI] ,and dl,ofh mov [si],dl这三条是连载一起用吗 最后AX是怎么保存的 展开
INC COUNTA
MOV CX,COUNTA
MOV AX,0
MOV BX,10
LEA SI,AB
LOOP01: MOV DL,[SI] ;
AND DL,0FH
MOV [SI],DL
MUL BX
MOV DL,[SI]
MOV DH,0
ADD AX,DX
INC SI
LOOP LOOP01
开始时countA=3 si-si+2 保存着由键盘输入的123
LEA SI,AB 是干嘛用的还有 MOV DL,[SI] ,and dl,ofh mov [si],dl这三条是连载一起用吗 最后AX是怎么保存的 展开
1个回答
展开全部
si-si+2 保存着由键盘输入的123,
把它们变成二进制,算法应该是 (1 * 10 + 2) * 10 + 3 = 100 + 20 + 3 = 123。
正确程序如下:
ASC_BIN PROC
MOV CX, COUNTA ;3
MOV AX, 0
MOV BX, 10
LEA SI, AB
LOOP01:
MUL BX ;0*10; 1*10;12*10;
MOV DL, [SI] ;'1' ; '2' ;'3' 都是ASCII码
AND DL, 0FH ; 1 ; 2 ; 3 变成数字
MOV DH, 0
ADD AX, DX ;0+1 ; 10+2;120+3
INC SI
LOOP LOOP01 ;循环三遍
循环三遍,共乘了三次,加了三次,过程可见上面的注释。
结果在 AX 中,并没有保存。
把它们变成二进制,算法应该是 (1 * 10 + 2) * 10 + 3 = 100 + 20 + 3 = 123。
正确程序如下:
ASC_BIN PROC
MOV CX, COUNTA ;3
MOV AX, 0
MOV BX, 10
LEA SI, AB
LOOP01:
MUL BX ;0*10; 1*10;12*10;
MOV DL, [SI] ;'1' ; '2' ;'3' 都是ASCII码
AND DL, 0FH ; 1 ; 2 ; 3 变成数字
MOV DH, 0
ADD AX, DX ;0+1 ; 10+2;120+3
INC SI
LOOP LOOP01 ;循环三遍
循环三遍,共乘了三次,加了三次,过程可见上面的注释。
结果在 AX 中,并没有保存。
追问
AX中是以BCD码的还是二进制
追答
结果是二进制数。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询