| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1801 人关注过本帖
标题:我的程序有问题,麻烦大家指导一下!谢谢!
取消只看楼主 加入收藏
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
 问题点数:0 回复次数:10 
我的程序有问题,麻烦大家指导一下!谢谢!
在内存建立一个表TABLE,其中存放20个字节型无符号数,从键盘输入一个数X(一位数),查找该数X在TABLE中是否存在,若存在,则在RESULT单元存入1,否则存入-1。(代码如下:)
请问在红色字段用什么能使程序正确或者有什么更好的方法!请大家指导!谢谢!
data segment
table db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
org 20h
result db ?
org 30h
buffer db 3
db ?
data ends
code segment
assume cs:code,ds:data
begin:
mov ax,data
mov ds,ax
mov si,offset table
mov cx,20
mov dx,offset buffer
mov ah,0ah
int 21h
a: mov bl,[si]
xor al,bl
test al,01h
je b
inc si
loop a
mov al,-1
mov result,al
jmp over
b: mov ax,1
mov result,al
over: mov ah,4ch
int 21h
code ends
end begin
搜索更多相关主题的帖子: 内存 data segment 麻烦 
2006-12-22 16:28
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
得分:0 
谢谢lefttime

终于正确了!!

2006-12-22 17:31
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
得分:0 
还有点小问题!!

如果我在键盘输入15为什么找不到这个数呢

2006-12-22 17:47
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
得分:0 
而且好象输入1也找不到了!

奇怪

2006-12-22 17:50
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
得分:0 
回复楼上的:

是这么要求的呀,一位数,但是输入表的内容是有2位数的,设置成一位不行了呀!

这个我都改了一天了,就是弄不好!

可以麻烦把相应位置的帮我指点一下吗?

[此贴子已经被作者于2006-12-22 19:11:14编辑过]


2006-12-22 19:06
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
得分:0 
以下是引用24tian在2006-12-22 18:23:38的发言:
你用 mov ah,0ah
int 21h
输入的字符啊,要转换成数字把

这样的话怎么输入象15的数呀???


2006-12-22 19:10
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
得分:0 
怎么把扑捉到的数变成数字的形式!而不是ASCII的形式?


2006-12-22 19:17
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
得分:0 

一位的我知道,减去30H就行了,可是2位究竟怎么做呢?????????????????


2006-12-22 19:37
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
得分:0 
以下是引用lefttime在2006-12-22 19:50:45的发言:
姑且认为输入的是一个字节的数,且默认作10进制
DSEG SEGMENT
TABLE DB 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20
X DB ?
RESULT DB 1 ;先假设存在
DSEG ENDS
CSEG SEGMENT
ASSUME CS:CSEG,DS:DSEG,ES:DSEG
MAIN: MOV AX,DSEG
MOV DS,AX
MOV ES,AX
MOV CX,20
LEA DI,TABLE
MOV AH,1
INT 21H
MOV BH,AL
INT 21H
MOV BL,AL
AND BX,0F0FH ;这里对输入的10进制数进行转换
MOV AX,BX
AAD ;非BCD码调整,转换成实际数值
CLD
REPNZ SCASB ;串扫描都知道了吧
JZ FOUND
MOV RESULT,-1 ;找不到的话就给RESULT赋值-1
FOUND: MOV AX,4C00H
INT 21H
CSEG ENDS
END MAIN

谢谢了!!!!多亏了帮忙啊!


2006-12-25 13:37
乖乖宝贝儿
Rank: 1
等 级:新手上路
帖 子:54
专家分:0
注 册:2006-12-22
收藏
得分:0 
看来小妹还是要多多努力学习呀!!!


谢谢你们了!!!!

2006-12-25 13:40
快速回复:我的程序有问题,麻烦大家指导一下!谢谢!
数据加载中...
 
   



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

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