汇编程序ss,cs, ds导致的数组、字符串的冲突
来源:互联网 发布:淘宝双11素材图片大全 编辑:程序博客网 时间:2024/05/29 15:07
今天编写了一个汇编程序,在bios里面运行
因为从栈段、数据段、代码段都要自己设置,cs、ds、ss的值可能不一样,导致使用数组、字符串的时候数据不正确
void myFunc(char *str, char *str2);
char str[20];
myFunc(str, "hello world");
这个函数中传入的str是str在栈段的偏移,"hello world"是字符串在ds中的偏移,传入到函数中时,函数获取到的只有偏移,使用数组时取元素用的是[si],即默认以ds为段。
如果ss、ds不一样会导致数据不正确
即使定义myFunc(char _far*str, char _far* str2);传入的也是栈段+偏移地址,ds+偏移地址。函数取元素的时候依然以ds为段。
这种情况下有一种不完美的方法:传值时不直接使用字符串,而将字符串传给数组,然后传数组
另一种标准方法是:加载程序时直接设置cs、ds、ss值一致。
阅读全文
0 0
- 汇编程序ss,cs, ds导致的数组、字符串的冲突
- 汇编语言中 cs, ds,ss 的区别
- cs,ds,ss,es?即cs,ds,ss,es的区别
- 8086汇编语言 汇编程序初始时CS与DS的关系
- 寄存器中cs,ds,ss,es的区别
- 寄存器中cs,ds,ss,es的区别
- CS、DS、SS、ES
- 汇编中 ds,ss,cs内容在内存中存放的顺序
- 汇编寄存器(cs,ds)的区别
- SS的基地址要等于DS的基地址
- 汇编语言中cs.ds.es.ss怎么用
- DS的苦恼 数组 排序
- c中字符串数组导致的crash
- 汇编程序的二维数组的访问
- 字符串的输入与显示(汇编程序)
- js冲突导致的问题
- 反汇编程序导致程序crash的解决思路
- 汇编学习第二课之 CS:IP,DS,SS:SP 寄存器
- 阿里云 RDS 读写分离
- iOS 控制器POP后dealloc方法不走,通知监听无法移除的问题
- day1:Android Wear开发入门--创建手表模拟器及在as平台上创建Android Wear工程
- linux学习心得
- vue 循环加载数据并获取第一条记录
- 汇编程序ss,cs, ds导致的数组、字符串的冲突
- vim实用操作
- windows下使用redis
- Activiti工作流框架学习(一)环境的搭建和数据表的了解
- 程序还没打开,报BDE错误
- centos ntfs格式磁盘挂载
- 算法概论 8,16
- [C语言]getline用法
- Hive Cli SocketException:Broken Pipe