问题1:汇编语言编写子程序,实现十进制形式显示AL中的二进制数(0-255)
回答:
以下子程序可以显示AX的值(0-65535)
当然也满足你要显示0-255的要求(设AH=0就可以了)
当然,对目前计算机而言,学习16位8086汇编没多大实际意义了
问题2:编语言 统计一个字符串内各个字符相同的字符个数,统计出来的数据放到cstr中,帮找错,运行不出结果。
其实,这个可以讨论一下的哦。看下哪里有问题。
回答:
以下子程序可以显示AX的值(0-65535)
当然也满足你要显示0-255的要求(设AH=0就可以了)
当然,对目前计算机而言,学习16位8086汇编没多大实际意义了
; display the unsigned integer value in AX
dec2asc proc
push ax
push dx
push cx
mov dx, -1 ; flag of ending
push dx ; flag to stack
mov cx, 10
l_div10:
xor dx, dx
div cx ; DX:AX / CX
push dx
test ax, ax
jne l_div10
mov cx, -1
mov ah, 2 ; display character in DL
l_disp:
pop dx
cmp dx, cx
je l_ret
add dl, '0' ; one-digit value turns to character
int 21h ; display the digit
jmp l_disp
l_ret:
pop cx
pop dx
pop ax
ret
dec2asc endp
问题2:编语言 统计一个字符串内各个字符相同的字符个数,统计出来的数据放到cstr中,帮找错,运行不出结果。
补充:
DATA SEGMENT
A DB 'jsifuhsefs'
LEN EQU ($-A)
CSTR DB 10 DUP(0)
CNT EQU ($-CSTR)
DATA ENDS
CODE SEGMENT
ASSUME DS:DATA,CS:CODE
START:
MOV AX,DATA
MOV DS,AX
XOR BX,BX
MOV CX,LEN
MOV AH,CSTR[BX]
INC AH
COM0:
PUSH CX
PUSH BX
MOV AL,A[BX]
JMP COM1
SUM1:
INC AH
COM1:
INC BX
CMP AL,A[BX]
JZ SUM1
JNZ COM1
COM2:
POP CX
POP BX
INC BX
MOV AH,CSTR[BX]
LOOP COM0
JMP EXIT
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
其实,这个可以讨论一下的哦。看下哪里有问题。