以下数值都为16进制。
汇编程序如果不手动设置栈段(stack segment),假如
ss 初始值为 100(程序开始的段地址), sp 初始值为 0000
如果程序中有 push 操作, sp-2 = fffe, 这样一算程序默认就把
100:fff0 到 100:ffff 的内存作为栈段了
(假设栈段是16个byte)
从程序头 100:0000 到 100:ffff 正好是 64k byte
我仔细阅读《汇编语言》,但并没有谈到这个问题,请教各位,如果一个程序长度不超过64k,是否程序运行的时候默认开辟 64k 的内存空间给该程序,以至于在程序使用默认栈段的时候不会影响到...


- [wjsun84] assume cs:codesg data segment db 1000h dup ( 05/16 09:50
- [wjsun84] 好像《汇编语言》里面没有提到缺省设置的栈吧? 05/15 19:56
- [游客] debug 看一下缺省设置的栈 在哪里吧 再思考一下,会不会出现你所认为的那样的数据覆盖问题,而覆 05/15 16:46
- [游客] 你跟踪了吗? 05/15 08:30
- [游客] 没问题。过了这个坎就前进一大步了。 05/02 10:19
- [q470393267] 你的标注都是英文!! 05/01 21:11
[2009-05-15 23:39] 缺省设置的栈的问题
阅读全文 |
评论次数(1) |
浏览次数(490) |
所属类型(默认类型)
[2009-05-14 23:09] 一个困扰我很久的问题
这个问题一直没想明白,为什么学到第十章以后,在别人的程序里面明明用到了 栈(stack),但是他们在程序的中并没有定义栈段(stack segment),这样在push数据到栈里面的时候,ss会指向程序开始的地址,sp 由0000 变到fffe ,这里原来的数据会被覆盖,而且这里应该是PSP区的数据,难道这个位置的数据不重要吗?...
阅读全文 |
评论次数(3) |
浏览次数(469) |
所属类型(默认类型)
[2009-05-01 16:51] 课程设计1
;-------------------------
; Assembly 课程设计1
;-------------------------
assume cs:codesg
data segment
; 21 year bx
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
...
; Assembly 课程设计1
;-------------------------
assume cs:codesg
data segment
; 21 year bx
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
...
阅读全文 |
评论次数(2) |
浏览次数(455) |
所属类型(汇编作业)