| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1449 人关注过本帖
标题:这是我汇编程序处女作品,但是漏洞百出~~求高人指点指点啊
只看楼主 加入收藏
wangtong0213
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-12-18
结帖率:50%
收藏
已结贴  问题点数:20 回复次数:10 
这是我汇编程序处女作品,但是漏洞百出~~求高人指点指点啊
编制两个多字节整数加法和减法程序,并将结果按十六进制形式显示在屏幕上。
DATA SEGMENT
  DA1 DW ?,2BH,?,3DH,?,20H,'$'
  DA2 DW ?,2DH,?,3DH,?,20H,'$'
  X DW ?
  Y DW ?
DATA ENDS
STACK SEGMENT PARA STACK
  DW 20H DUP(0)
STACK ENDS
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA,SS:STACK
START:MOV AX,DATA
      MOV DS,AX
      MOV AH,01H
      INT 21H
      MOV SI,OFFSET DA1
      MOV DI,OFFSET DA2
      MOV AX,[SI]
      CMP AL,9
      JLE L0
      ADD AL,7
   L0:ADD AL,30H
      MOV AH,01H
      INT 21H
   L1:MOV AX,[SI+4]
      MOV AH,01H
      INT 21H
      JMP L2
   L2:MOV AX,X
      MOV BX,Y
      ADD AX,BX
      MOV [SI+8],AX
      MOV AX,[SI+8]
      MOV DX,AX
      MOV AH,02H
      INT 21H
   L3:MOV AX,[DI]
      CMP AL,9
      JLE L0
      ADD AL,7
   L4:MOV AX,[DI+4]
      MOV AH,01H
      INT 21H
   L5:MOV AX,X
      MOV BX,Y
      SUB AX,BX
      MOV [DI+8],AX
      MOV AX,[DI+8]
      MOV DX,AX
      MOV AH,02H
      INT 21H
   L6:MOV AH,09H
      INT 21H
      MOV AH,4CH
      INT 21H
CODE ENDS
  END START
怎么说呢,这个程序我编出来感觉编的什么都不是。我对什么时候用AL,什么时候用AX,什么时候用ax,什么时候用bx,cx都很迷惑,希望能得到解答,谢谢啦
                                                                                            
        
      
                                                                                 
搜索更多相关主题的帖子: 十六进制 
2011-12-18 20:28
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:20 
程序代码:
DATA SEGMENT
  DA1 DW ?,2BH,?,3DH,?,20H,'$'
  DA2 DW ?,2DH,?,3DH,?,20H,'$'
  X DW ?
  Y DW ?
DATA ENDS
STACK SEGMENT PARA STACK
  DW 20H DUP(0)
STACK ENDS
CODE SEGMENT
  ASSUME CS:CODE,DS:DATA,SS:STACK
START:
      MOV AX,DATA
      MOV DS,AX
      MOV AH,01H
      INT 21H            ;getchar();
      MOV SI,OFFSET DA1  ;unsigned short *dp = da1;
      MOV DI,OFFSET DA2  ;unsigned short *q = da2;
      MOV AX,[SI]        ;unsigned short a = ???;
      CMP AL,9
      JLE L0
      ADD AL,7
   L0:
      ADD AL,30H
      MOV AH,01H
      INT 21H
   L1:
      MOV AX,[SI+4]
      MOV AH,01H
      INT 21H
      JMP L2
   L2:
      MOV AX,X
      MOV BX,Y
      ADD AX,BX
      MOV [SI+8],AX
      MOV AX,[SI+8]
      MOV DX,AX
      MOV AH,02H
      INT 21H
   L3:
      MOV AX,[DI]
      CMP AL,9
      JLE L0
      ADD AL,7
   L4:
      MOV AX,[DI+4]
      MOV AH,01H
      INT 21H
   L5:
      MOV AX,X
      MOV BX,Y
      SUB AX,BX
      MOV [DI+8],AX
      MOV AX,[DI+8]
      MOV DX,AX
      MOV AH,02H
      INT 21H
   L6:
      MOV AH,09H
      INT 21H
      MOV AH,4CH
      INT 21H
CODE ENDS
  END START
我写不下去了,你再仔细检查下你的代码,你的疑惑是对他们不了解,再去看看书,不急着写代码

技术问题,请不要以短消息方式提问
2011-12-18 21:18
wangtong0213
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-12-18
收藏
得分:0 
回复 2楼 zaixuexi
只想用she的一首歌来形容《他还不懂》。后边两条注释我都没看懂~~
2011-12-18 21:49
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
以下是引用wangtong0213在2011-12-18 21:49:57的发言:

只想用she的一首歌来形容《他还不懂》。后边两条注释我都没看懂~~
你想说什么?我看晕了,SHE?,谁还不懂?

技术问题,请不要以短消息方式提问
2011-12-18 22:01
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
不要在我这个版块说些莫名其妙的话

技术问题,请不要以短消息方式提问
2011-12-18 22:23
wangtong0213
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-12-18
收藏
得分:0 
额···我不懂···能不能用中文给我解释一下最后三个注释是什么意思啊?谢谢了
2011-12-20 14:24
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
你的代码start开始的第7句MOV AX,[SI],你想取什么数据,我就没看明白,你先把这个解释一下

技术问题,请不要以短消息方式提问
2011-12-20 16:16
wangtong0213
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-12-18
收藏
得分:0 
就是想把DA1数据段里的加号前边的那个数据赋给AX,我觉得输入的应该是十进制的数,就想着把十进制转化成十六进制~~然后再取加号后边的数变成十六进制,最后两个数相加相减得出结果,大概就是想按这个思路编来着~~版主觉得这个程序还有改的必要吗?我是觉得好像哪哪都有问题···题目当中说是多字节,要是两个数字节不一样该怎么编呢?对我这个水平的人来说,毫无头绪,瞬间让我觉得头大
2011-12-20 17:03
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
就是想把DA1数据段里的加号前边的那个数据赋给AX
1.数据的值是随机数?
 DA1 DW ?,2BH,?,3DH,?,20H,'$'
2.我觉得输入的应该是十进制的数
 MOV AH,01H
 INT 21H
 这两句是你的输入?你的意思是输入完了数据会自动进入DA1?
3.后面的没看,感觉代码对的还挺整齐的,不会让人觉得看着反感,还不错
基于第1点和第2点,所以我就不想写注释了,你先查下DOS系统中断中关于输入的用法

技术问题,请不要以短消息方式提问
2011-12-20 17:45
wangtong0213
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2011-12-18
收藏
得分:0 
谢谢版主了。
2011-12-20 18:44
快速回复:这是我汇编程序处女作品,但是漏洞百出~~求高人指点指点啊
数据加载中...
 
   



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

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