| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 775 人关注过本帖
标题:来请教汇编语言的基础问题来了
只看楼主 加入收藏
star5578
Rank: 2
等 级:论坛游民
帖 子:39
专家分:11
注 册:2010-7-31
结帖率:25%
收藏
已结贴  问题点数:10 回复次数:7 
来请教汇编语言的基础问题来了
程序代码:
data segment
buffer db 80
       db 0
       db 80 dup(0)
data ends
code segment
start:
     mov ax,data
     mov ds,ax
    
     mov dx,offset buffer
     mov ah,0ah
     int 21h
    
     push,bx

     mov ax,4c00h
     int 21h
code ends
     end   start
输入的字符串为什么不能压入bx中呢?字符串不是存在寄存器dx中吗?

[ 本帖最后由 star5578 于 2010-12-15 22:50 编辑 ]
搜索更多相关主题的帖子: 基础 汇编语言 
2010-12-15 22:28
star5578
Rank: 2
等 级:论坛游民
帖 子:39
专家分:11
注 册:2010-7-31
收藏
得分:0 
怎么没人解答呀?
2010-12-16 09:49
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:10 
程序代码:
assume cs:code,ds:data
data segment
buffer db 80
       db 0
       db 80 dup(0)
data ends
code segment
start:
     mov ax,data
     mov ds,ax
   
     mov dx,offset buffer
     mov ah,0ah
     int 21h
   
     ;push bx

     mov ax,4c00h
     int 21h
code ends
     end   start

输入的字符串为什么不能压入bx中呢?字符串不是存在寄存器dx中吗?

不是很明白你的意思,你这句话的转折好象比较突然...你是要问bx还是dx?

字符串不是存在寄存器dx中 mov dx,offset buffer 表示dx中是buffer的偏移地址
buffer db 80        ;定长
       db 0         ;输入长度
       db 80 dup(0) ;这里面是你字符串存放的空间,比如你输入了"hello world"

你push bx只是把bx的内容压入堆栈了,和字符串没什么关系.如果你还有其他问题,希望可以再描述的详细些吧,呵呵.


技术问题,请不要以短消息方式提问
2010-12-16 09:59
star5578
Rank: 2
等 级:论坛游民
帖 子:39
专家分:11
注 册:2010-7-31
收藏
得分:0 
回复 3楼 zaixuexi
DOS功能调用int 21h 输入字符串功能:ah=0ah,输入的字符串不是存在寄存器中是存在哪里呢?谢谢解答
2010-12-16 12:06
star5578
Rank: 2
等 级:论坛游民
帖 子:39
专家分:11
注 册:2010-7-31
收藏
得分:0 
回复 3楼 zaixuexi
DOS功能调用int 21h 输入字符串功能:ah=0ah,这样输入的字符串,如果我想把它压栈能一起压入吗? 应该怎么实现呢?不能直接push吗?
2010-12-16 12:10
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
1.
buffer是你数据段自己定义的缓冲区
buffer db 80        ;定长
       db 0         ;输入长度
       db 80 dup(0) ;这里面是你字符串存放的空间,比如你输入了"hello world"输入的字符串不是存在寄存器中是存在这里!!!
2.如果我想把它压栈能一起压入吗?你想把字符串放进寄存器最多只能一次放2个字节,那样处理不是相当麻烦么.
一般来说,你如果是为了子程序调用,就压首地址就行了,相当于传一个数组
mov bx,offset buffer+81
mov cx,ds:buffer[80]
push cx
push bx
call sub
3.如果你还是不太理解,再问问你们老师看看,可能我讲的不好,呵呵.
收到的鲜花
  • star55782010-12-16 13:08 送鲜花  5朵   附言:好文章

技术问题,请不要以短消息方式提问
2010-12-16 12:34
star5578
Rank: 2
等 级:论坛游民
帖 子:39
专家分:11
注 册:2010-7-31
收藏
得分:0 
回复 6楼 zaixuexi
谢谢!!!
2010-12-16 12:56
zaixuexi
Rank: 12Rank: 12Rank: 12
来 自:上海
等 级:火箭侠
威 望:8
帖 子:858
专家分:3233
注 册:2010-12-1
收藏
得分:0 
不用谢的,明白了就好,呵呵

技术问题,请不要以短消息方式提问
2010-12-16 13:04
快速回复:来请教汇编语言的基础问题来了
数据加载中...
 
   



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

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