标题:[讨论];;;;;在STR中查找‘AME’出现的个数用十进制显示个数没有错不过没有结 ...
取消只看楼主
我的汇
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2006-4-20
 问题点数:0 回复次数:0 
[讨论];;;;;在STR中查找‘AME’出现的个数用十进制显示个数没有错不过没有结果

;;;;;在STR中查找‘AME’出现的个数用十进制显示个数没有错不过没有结果
;帮我看一下谢谢了!

;-----二进制数转换为十进制数方法----
;;CX中的数是个16位的二进制无符号数,所表示的数范围

在;;0~65535之间。转换的方法是首先将其反复减十进制万位上

的;;权值10000,一直减到不够减为止,并记录下减的次数,也

就;;是其中所包含10000的个数,那么它的十进制数的万位数字

就;;是它所包含的一万的个数,不够减时再用余下的数减千位上

的;;权值1000,得出千位上的数字,以此类推,可求出百位、十

位;;和个位数的数字。从而把该二进制数转换为十进制数。
;----在STR中查找‘AME’出现的个数用十进制显示个数------
DATA SEGMENT;---------------------------------
STR DB 'KFAMEAMEDDAMEA'
COUNT EQU $-STR ;COUNT=字符串长度
qnum dw 10000,1000,100,10,1
buffer db 5 dup(?)
DATA ENDS;--------------DATA----------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START: MOV AX,DATA;-------------开始---------------
MOV DS,AX
MOV ES,AX
LEA DI,STR
CALL FINDS ;------查找AME-----
MOV CX,BX;----??
LEA DI,BUFFER; (DI)=存放转换结果存储区的首地址
LEA BX,QNUM ; (BX)=存放十进制权值存储区的首地址
CALL BIN_DEC ;----转换二进制----
LEA DX,buffer
mov AH,9
int 21h ;----输出十进制----
mov AH,4CH ;---回到DOS下---
INT 21H
FINDS PROC NEAR;------------查找AME------------
MOV CX,COUNT
MOV BX,0 ;“AME”程序的次数→BX
MOV AL,'A'
CLD
P: REPNE SCASB;------
JE A
JMP OUT1
A: CMP BYTE PTR [DI], 'M'
JNE B
CMP BYTE PTR [DI], 'E'
JNE B
INC BX
B: CMP CX,0
JNE p
OUT1:RET
FINDS ENDP---------------

;----------------转换二进制---- -----------
BIN_DEC PROC NEAR
MOV DH,5 ;--(DH)=十进制的总位数(5位)
NEXT1: MOV DL,0 ;(DL)=十进制某位上的位数
NEXT2: SUB CX,[BX]
JAE COUTB
MOV [DI],DL
ADD CX,[BX]
INC DI
ADD BX,2
DEC DH
JNZ NEXT1
RET
COUTB:INC DL
JMP NEXT2
BIN_DEC ENDP
;----------------------------------

CODE ENDS
END START

搜索更多相关主题的帖子: STR AME 十进制 结果 
2006-05-01 21:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-61495-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.168596 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved