汇编语 编写子程序的问题和统计一个字符串的问题

问题1:汇编语言编写子程序,实现十进制形式显示AL中的二进制数(0-255)
回答:
以下子程序可以显示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

其实,这个可以讨论一下的哦。看下哪里有问题。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值