- [zkkpkk] 16位的寻址很清楚也很简单,物理地址=段地址*16+偏移地址,教材上写得很清楚。 06/01 01:32
- [游客] zkkpkk 可以把16位的寻址方式的图片放上来吗? 01/18 15:10
- [zkkpkk] 我现在知道好些WIN32汇编的书为什么不仔细讲寻址了,难讲清索性不讲,先用API搞些看得见成果的东西 03/31 11:09
- [zkkpkk] 晕死,是我自己想当然了,32位机的地址计算只有在实模式下的才是继承8086的段+偏移,在保护模式下就 03/31 11:01
- [游客] 不过不同的是寄存器,如eax是8位16进制 ========= 什么叫“8位16进制”啊??不知 03/27 16:28
- [zkkpkk] 没错我问过了,沿用物理=段*16+偏移,不过不同的是寄存器,如eax是8位16进制,叫32位机也就是 03/27 15:16
- [crazyman] 有个疑问: 32位的寻址的原理还是和8086的一样氛围段地址和偏移地址么?如果是,那么段地址和偏移 03/26 17:03
- [crazyman] 不错。抓紧学习,尽快突围啊! 02/14 13:59
- [qyjwyjl] 刚刚提交了作业,看看吧,提提意见!!! 02/06 22:59
- [starrynight] 恩 很不错 为了直观起见 可以这样表述: cmp cl,'a' jb hi cmp 02/04 22:34
[2008-03-26 10:54] 32位地址的寻址方式
在32位微机系统中,除了支持前面的七种寻址方式外(注1),又提供了一种更灵活、方便,但也更复杂的内存寻址方式,从而使内存地址的寻址范围得到了进一步扩大。
在用16位寄存器来访问存储单元时,只能使用基地址寄存器(BX和BP)和变址寄存器(SI和DI)来作为地址偏移量的一部分,但在用32位寄存器寻址时,不存在上述限制,所有32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)都可以是地址偏移量的一个组成部分。
当用32位地址偏移量进行寻址时,内存地址的偏移量可分为三部分:一个32位基址寄存器,一个可乘1、2、4或8的32位变址寄存器,一个8位/32位的偏移常量,...
在用16位寄存器来访问存储单元时,只能使用基地址寄存器(BX和BP)和变址寄存器(SI和DI)来作为地址偏移量的一部分,但在用32位寄存器寻址时,不存在上述限制,所有32位寄存器(EAX、EBX、ECX、EDX、ESI、EDI、EBP和ESP)都可以是地址偏移量的一个组成部分。
当用32位地址偏移量进行寻址时,内存地址的偏移量可分为三部分:一个32位基址寄存器,一个可乘1、2、4或8的32位变址寄存器,一个8位/32位的偏移常量,...
阅读全文 |
评论次数(7) |
浏览次数(2235) |
所属类型(学习感悟)
[2008-02-05 01:13] 读取CMOS时间并显示
assume cs:code
code segment
start:
mov bx,0b800h
mov es,bx
mov si,160*12+30*2
;显示年月日
mov cx,3
mov al,9
s:
push ax
call fun
mov byte ptr es:[si],ah
mov byte ptr es:[si+2],al
mov byte ptr es:[si+2].2h,2fh
pop ax
add si,6
dec al
loop s
mov byte ptr es:[s...
code segment
start:
mov bx,0b800h
mov es,bx
mov si,160*12+30*2
;显示年月日
mov cx,3
mov al,9
s:
push ax
call fun
mov byte ptr es:[si],ah
mov byte ptr es:[si+2],al
mov byte ptr es:[si+2].2h,2fh
pop ax
add si,6
dec al
loop s
mov byte ptr es:[s...
阅读全文 |
评论次数(2) |
浏览次数(1142) |
所属类型(汇编作业)
[2008-02-04 00:25] 把0结尾的字符串中的小写转大写
;思路很简单ASCII码在60H~7BH之间的都是小写字母
;用jna和jnb即可
assume cs:code
data segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:
push cx
mov ch,0
head:
mov cl,[si]
jcxz...
;用jna和jnb即可
assume cs:code
data segment
db "Beginner's All-purpose Symbolic Instruction Code.",0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
call letterc
mov ax,4c00h
int 21h
letterc:
push cx
mov ch,0
head:
mov cl,[si]
jcxz...
阅读全文 |
评论次数(1) |
浏览次数(1206) |
所属类型(汇编作业)
[2008-01-21 13:21] 内核旅行
《Windows核心编程入手》,开始了我的内核旅行,汇编的测试暂时搁置,我一定会找时间补上来,走了一些弯路,始终还是走上了正轨,轻重缓急应该能自己拿捏了,我想我应该不会像李马说的那样,在茫茫“核海”中而走火入魔,最后连信手写一个双向链表都BUG繁出。万不可大言不惭地拿出“程序设计=数据结构+算法”这个公式去教育自己的学弟学妹,而自己又将其束之高阁.........
阅读全文 |
评论次数(1) |
浏览次数(809) |
所属类型(学习感悟)
[2008-01-18 17:54] 午觉醒来第一件大事——微软开源!
刚刚才接到同学的短信息,其实昨天就发出消息了, 微软总算放下包袱了,正如《反托拉斯行动》里说的那样:就像莎士比亚的戏剧,信息是属于全人类的,知识是属于全人类的!
继续关注,部分源代码查看网站: http://www.123aspx.com/Rotor/Default.aspx
我第一个看了集合类库,Arraylist实现方法是,超界的时候用Array.Copy来装
我做的时候是定义两个object[],想想看MS的做法才是真正的代码重组,每个类都是经过深思熟虑的...
继续关注,部分源代码查看网站: http://www.123aspx.com/Rotor/Default.aspx
我第一个看了集合类库,Arraylist实现方法是,超界的时候用Array.Copy来装
我做的时候是定义两个object[],想想看MS的做法才是真正的代码重组,每个类都是经过深思熟虑的...
阅读全文 |
评论次数(3) |
浏览次数(929) |
所属类型(个人日记)
[2008-01-18 02:25] 第9章实验9闪烁的彩字
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start:
mov ax,0b800h
add ax,150
mov es,ax
mov ax,data
mov ds,ax
mov bx,0
mov di,0
mov cx,16
s:
mov si,0
mov al,ds:[di]
;绿色闪烁
mov es:[bx+si],al
mov ah,10000010b
mov es:[bx+si+...
data segment
db 'welcome to masm!'
data ends
code segment
start:
mov ax,0b800h
add ax,150
mov es,ax
mov ax,data
mov ds,ax
mov bx,0
mov di,0
mov cx,16
s:
mov si,0
mov al,ds:[di]
;绿色闪烁
mov es:[bx+si],al
mov ah,10000010b
mov es:[bx+si+...
阅读全文 |
评论次数(1) |
浏览次数(812) |
所属类型(汇编作业)
[2008-01-18 02:24] 第9章实验8分析
程序成功跳出而没有死循环,关键在于被复制的jmp short s1上,masm把它编译成机器码后并不以标示为跳转基准,而是老老实实地执行编译出来的机器码,向上偏移。...
阅读全文 |
评论次数(2) |
浏览次数(943) |
所属类型(汇编作业)
[2008-01-18 00:33] 测试9.1-9.3
;9.1(1)
assume cs:code
data segment
db 0,0,0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
mov ax,4c00h
int 21h
code ends
end start
;9.1(2)
assume cs:code
data segment
dd 12345678h
data ends
code segment
start:
mov ax,data
mov ...
assume cs:code
data segment
db 0,0,0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
mov ax,4c00h
int 21h
code ends
end start
;9.1(2)
assume cs:code
data segment
dd 12345678h
data ends
code segment
start:
mov ax,data
mov ...
阅读全文 |
评论次数(1) |
浏览次数(901) |
所属类型(汇编作业)
[2008-01-16 13:35] 第8章最后一题
assume cs:code,ds:data,es:table
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
;以上21个串表示年份
dd 16,32,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 34598...
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
db '1993','1994','1995'
;以上21个串表示年份
dd 16,32,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 34598...
阅读全文 |
评论次数(1) |
浏览次数(776) |
所属类型(汇编作业)
[2008-01-15 11:11] 第7章最后一题
assume cs:code,ss:stack,ds:data
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov bx,0
...
stack segment
dw 0,0,0,0,0,0,0,0
stack ends
data segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
data ends
code segment
start:
mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,16
mov bx,0
...
阅读全文 |
评论次数(4) |
浏览次数(801) |
所属类型(汇编作业)
『 查看更多文章 』