| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1915 人关注过本帖
标题:我不明白这个汇编程序怎么错了?
只看楼主 加入收藏
ensky_cy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-9-26
结帖率:100%
收藏
 问题点数:0 回复次数:14 
我不明白这个汇编程序怎么错了?
STAC SEGMENT
     DB  6 DUP(?)
STAC ENDS
DATA SEGMENT
     BUFFER DB 6 DUP(?)
DATA ENDS
CODE SEGMENT
     ASSUME   CS:CODE,DS:DATA,SS:STAC
START:
     MOV DX,0
     MOV BL,2
     LEA DI,BUFFER
INPUT:
     MOV AH,01H
     INT 21H         ;输入第一个字符
     SUB AL,30H      ;将输入的数字减去30h
     JL  EXIT
     CMP AL,0AH
     JA  EXIT
     CMP BL,1
     JE NEXT1
     PUSH BX
     MOV BL,10
     MUL BL          ;十位上数乘以10
     POP BX
     MOV [DI],AL
     DEC BL
     JNZ INPUT
     
NEXT1:
     MOV BX,2
     ADD [DI],AL
NEXT3:     
     MOV AL,[DI]
     CMP BX,2
     JL  NEXT2
     MOV CX,4
     SHL AL,CL        ;左移四位,相当于:0000 xxxx (xxxx表对应原高四位二进制数)
NEXT2:
     AND AL,0FH      
     MOV DL,AL
     MOV AH,02H
     INT 21H          ;输出DL中内容
     DEC BX
     JNZ NEXT3
EXIT:
CODE ENDS
     END START
     
 

;贴上我的操作提示,我的是64位CPU难道这也有影响?
[bo]补充一下:从键盘输入一个两位数(必需是数字),然后将这个两位数以对应十六进制输出。如:输入 45 (0010 1101),则输出为 2D(对应为十进制数)。[/bo]

[[it] 本帖最后由 ensky_cy 于 2008-10-26 00:14 编辑 [/it]]

提示.jpg (24.29 KB)
图片附件: 游客没有浏览图片的权限,请 登录注册
搜索更多相关主题的帖子: 汇编 错误 提示 
2008-10-25 02:16
ONEPROBLEM
Rank: 6Rank: 6
来 自:广西 南宁
等 级:贵宾
威 望:21
帖 子:1569
专家分:349
注 册:2008-7-11
收藏
得分:0 
建议楼主先给程序注释一下,有一些必要的说明~~
2008-10-25 09:35
wanjiang
Rank: 1
等 级:新手上路
帖 子:85
专家分:0
注 册:2008-10-25
收藏
得分:0 
起码说说这个程序你究竟想干什么嘛
2008-10-25 10:39
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
[bo][un]ONEPROBLEM[/un] 在 2008-10-25 09:35 的发言:[/bo]

建议楼主先给程序注释一下,有一些必要的说明~~


否则我们也不明白……
2008-10-25 11:42
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
[bo][un]ensky_cy[/un] 在 2008-10-25 02:16 的发言:[/bo]

STAC SEGMENT
     DB  6 DUP(?)
STAC ENDS
DATA SEGMENT
     BUFFER DB 6 DUP(?)
DATA ENDS
CODE SEGMENT
     ASSUME   CS:CODE,DS:DATA,SS:STAC
START:
     MOV DX,0
     MOV BL,2
     LEA DI,BUF ...


你这程序没结尾吧

和cpu没关吧

不过 偶一直搞不懂 64位到底有啥用  操作系统还是32位的 可它还能运行16位程序……

16位 32位 64位全在一起……

[[it] 本帖最后由 zklhp 于 2008-10-25 11:45 编辑 [/it]]
2008-10-25 11:43
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
最后应该告诉电脑 你的程序完了

mov ah,4ch
int 21h

不过 加了程序也不对 没输出
2008-10-25 19:51
ensky_cy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-9-26
收藏
得分:0 
[bo][un]zklhp[/un] 在 2008-10-25 19:51 的发言:[/bo]

最后应该告诉电脑 你的程序完了

mov ah,4ch
int 21h

不过 加了程序也不对 没输出

     [bo]MOV DL,AL
     MOV AH,02H
     INT 21H  
[/bo]
[bo]这个不是用于输出的吗?[/bo]
2008-10-26 00:16
ensky_cy
Rank: 1
来 自:湖北
等 级:新手上路
帖 子:24
专家分:0
注 册:2008-9-26
收藏
得分:0 
回复 6# zklhp 的帖子
加了mov ah,4ch
    int 21h
就没有那个错误提示了,谢谢了,不过还的请教为什么没有输出。
2008-10-26 00:21
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
程序代码:
;MASMPlus 代码模板 - 纯 DOS 程序

.model small
DATA SEGMENT
    BUFFER DB 6 DUP(?)
DATA ENDS
CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:
    mov ax,DATA
    mov ds,ax
    MOV BL,2
    LEA DI,BUFFER
INPUT:
    MOV AH,01H
    INT 21H        ;输入第一个字符
    SUB AL,30H     ;将输入的数字减去30h
    JL EXIT
    CMP AL,0AH
    JA EXIT
    CMP BL,1
    JE NEXT1
    mov cl,bl
    MOV BL,10
    MUL BL        ;十位上数乘以10
    mov bl,cl
    MOV [DI],AL
    DEC BL
    JNZ INPUT
    
NEXT1:
    MOV BX,2
    ADD [DI],AL
NEXT3:    
    MOV AL,[DI]
    CMP BX,2
    JL  NEXT2
    MOV cl,4
    mov dl,al
    SHR AL,cl       ;左移四位,相当于:0000 xxxx (xxxx表对应原高四位二进制数)
NEXT2:
    AND AL,0FH
    MOV DL,AL
    MOV AH,02H
    add dl,30h
    INT 21H        ;输出DL中内容
    DEC BX
    JNZ NEXT3
EXIT:
    mov ah,4ch
    int 21h
CODE ENDS
    END START

2008-10-26 10:00
zklhp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:china
等 级:贵宾
威 望:254
帖 子:11485
专家分:33241
注 册:2007-7-10
收藏
得分:0 
根据你的思路、算法改对了大概是这样

不过你的实现方法就有问题 你说怎么打字母呢 还得加个判断 当待输出字符是16进制的a-f时 不应该加30h
2008-10-26 10:05
快速回复:我不明白这个汇编程序怎么错了?
数据加载中...
 
   



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

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