| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 476 人关注过本帖
标题:我想通过BP修改buf中的内容,程序如下,哪错了?
只看楼主 加入收藏
fz4628413
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-6
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
我想通过BP修改buf中的内容,程序如下,哪错了?
;输入一个n,显示1-n的所有素数,n最大为65537
;n用DB定义即可
ASSUME CS:code,DS:data,SS:stack

stack SEGMENT
    SLEN    EQU 200
    DW SLEN DUP(?)
stack ENDS

data SEGMENT
    ;'-'==2dH
    ;'0'==30H
    buf  DB 10   ;DS:0000H
    len     DB ?
         DB 10 DUP(0)
         DB '$'
data ENDS

code SEGMENT
start:
    MOV AX,data
    MOV DS,AX
    MOV ES,AX
    MOV AX,stack
    MOV SS,AX
    MOV SP,SLEN
    ;---Code Begin
    ;输入字符串
    LEA DX,buf
    MOV AH,10
    INT 21H
    LEA SI,buf
    CALL MToNum
    ;LEA BX,len
    ;INC BX
    ;MOV AX,[BX]
    ;---Code End
    MOV AX,0
    CALL MCrlf
    LEA DX,buf
    MOV AH,9
    INT 21H
    MOV AH,4CH
    INT 21H
;***********************************
;-----------------------------------
;ASCII码转数字,覆盖原来的结果
;如:a='1',调用后:a=01H
;void MToNum(Char* bufStr)
;@Pram:
;SI---bufStr
; E.x: LEA  SI,bufStr
;      CALL MToNum
;-----------------------------------
MToNum PROC
    PUSH BP
    PUSH CX
    INC  SI
    ;取得字符个数,不含回车符
    MOV  CL,BYTE PTR [SI]
    L_MToNum1:
        MOV  BP,SI
        ADD  BP,CX
        MOV  CH,BYTE PTR DS:[BP]
        SUB  CH,30H
        MOV  DS:[BP],CH
        MOV  CH,0
    LOOP L_MToNum1
    POP  CX
    POP  BP
    ret
MToNum ENDP
;-----------------------------------
;数字转ASCII码
;-----------------------------------
MToASCII PROC

    ret                                 ;adsf
MToASCII ENDP
;-----------------------------------
;输出回车换行
;-----------------------------------
MCrlf PROC                                      ;asdfa
    PUSH DX
    PUSH AX
    MOV DL, 13
    MOV AH, 2
    INT 21H
    MOV DL, 10
    MOV AH, 2
    INT 21H
    POP AX
    POP DX
    RET
MCrlf ENDP
code ENDS
     END    start
搜索更多相关主题的帖子: 字符串 
2012-11-08 13:25
fz4628413
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-6
收藏
得分:0 
在线坐等~
2012-11-08 13:30
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
LOOP L_MToNum1的循环次数CX是多少? 循环里面改变CH又会有什么影响?

梅尚程荀
马谭杨奚







                                                       
2012-11-08 14:24
fz4628413
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-6
收藏
得分:0 
CX是输入的字符个数(递减),CH用来暂时存放需要-30H的字符,如果没有MOV CH,0 那么循环次数将变大
2012-11-08 18:45
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:0 
在LOOP循环开始前要有确定的 CX 也就是必须确定CH 和 CL。
在循环内如果没有保护机制 不能随便使用CX 、CH 、CL来参与运算和存储。

梅尚程荀
马谭杨奚







                                                       
2012-11-08 18:48
fz4628413
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-6
收藏
得分:0 
以下是引用有容就大在2012-11-8 14:24:05的发言:

LOOP L_MToNum1的循环次数CX是多少? 循环里面改变CH又会有什么影响?

刚发现没做错。。。我无病呻吟了……sorry。
2012-11-08 18:50
有容就大
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:东土大唐
等 级:版主
威 望:74
帖 子:9048
专家分:14309
注 册:2011-11-11
收藏
得分:20 
回复 6楼 fz4628413
呵呵 是哦 希望你搞出整个程序来。


[ 本帖最后由 有容就大 于 2012-11-8 19:47 编辑 ]

梅尚程荀
马谭杨奚







                                                       
2012-11-08 19:42
fz4628413
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2012-11-6
收藏
得分:0 
以下是引用有容就大在2012-11-8 19:42:50的发言:

呵呵 是哦 希望你搞出整个程序来。

呵呵,谢啦~一定会的
2012-11-08 20:00
快速回复:我想通过BP修改buf中的内容,程序如下,哪错了?
数据加载中...
 
   



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

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