《汇编语言(王爽)》第七、八章【总结】
2015-10-29 14:42
190 查看
第七章 更灵活的定位内存地址的方法
1、and和or指令:
and指令:可以将操作对象相应位设为0,其他位不变;
or指令:可以将操作对象相应位设为1,其他位不变;
2、ASCII码:
3、以字符形式给出的数据:
'......'指明数据是以字符形式给出的,编译器将它们转化成对应的ASCII码
大写字母——>ASCII码的第5位为0;(小写字母对应为1)
4、[bx+idata]
mov ax,[200+bx]
mov ax,200[bx]
mov ax,[bx].200
可以利用[bx+idata]进行数组处理
5、SI和DI(源地址寄存器、目的地址寄存器)
SI、DI与bx功能相近,但是不能分成两个8位寄存器;
[bx+si]、[bx+di]、[bx+si+idata]、[bx+di+idata]
mov ax,[bx][si]
mov ax,[bx+200+si]
mov ax,[200+bx+si]
mov ax,200[bx][si]
mov ax,[bx].200[si]
mov ax,[bx][si].200
6、不同的寻址方式
【实验6:将datasg段中的每个单词的前四个字母改成大写字母】
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov sp,16
mov bx,0
mov cx,4
s0: push cx
//将外层循环的cx值压栈
mov cx,4
mov si,0
s: mov
al,[bx+3+si]
and al,11011111b
mov [bx+3+si],al
inc si
loop s
pop cx
add bx,16
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
外层循环一次的结果,以及程序运行的最终结果如下
第八章 数据处理的两个基本问题
reg寄存器;sreg段寄存器(ds\ss\cs\es)
1、bx、si、di、bp
[...]中使用bp寄存器,段地址默认在ss中
2、机器指令处理的数据所在位置:CPU内部、内存、端口
3、汇编语言中数据位置的表达:
立即数(idata)
寄存器
段地址(SA)和偏移地址(EA)
4、寻址方式:
5、指令处理的数据长度:
寄存器指明;X ptr指明(X可以为word、byte)
6、div指令:
div reg
div 内存单元
除数为8位:则被除数为16位,默认在AX中;结果:AL存储商,AH存储余数
除数为16位:则被除数为32位,默认在DX和AX中,DX存放高16位,AX存放低16位;结果:AX存储商、DX存储余数
7、伪指令dd:定义双字类型(dword)
8、dup:配合db\dw\dd等使用,进行数据的重复,db 3 dup(0)等价于db 0,0,0
1、and和or指令:
and指令:可以将操作对象相应位设为0,其他位不变;
or指令:可以将操作对象相应位设为1,其他位不变;
2、ASCII码:
3、以字符形式给出的数据:
'......'指明数据是以字符形式给出的,编译器将它们转化成对应的ASCII码
大写字母——>ASCII码的第5位为0;(小写字母对应为1)
4、[bx+idata]
mov ax,[200+bx]
mov ax,200[bx]
mov ax,[bx].200
可以利用[bx+idata]进行数组处理
5、SI和DI(源地址寄存器、目的地址寄存器)
SI、DI与bx功能相近,但是不能分成两个8位寄存器;
[bx+si]、[bx+di]、[bx+si+idata]、[bx+di+idata]
mov ax,[bx][si]
mov ax,[bx+200+si]
mov ax,[200+bx+si]
mov ax,200[bx][si]
mov ax,[bx].200[si]
mov ax,[bx][si].200
6、不同的寻址方式
【实验6:将datasg段中的每个单词的前四个字母改成大写字母】
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display '
db '2. brows '
db '3. replace '
db '4. modify '
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov sp,16
mov bx,0
mov cx,4
s0: push cx
//将外层循环的cx值压栈
mov cx,4
mov si,0
s: mov
al,[bx+3+si]
and al,11011111b
mov [bx+3+si],al
inc si
loop s
pop cx
add bx,16
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
外层循环一次的结果,以及程序运行的最终结果如下
第八章 数据处理的两个基本问题
reg寄存器;sreg段寄存器(ds\ss\cs\es)
1、bx、si、di、bp
[...]中使用bp寄存器,段地址默认在ss中
2、机器指令处理的数据所在位置:CPU内部、内存、端口
3、汇编语言中数据位置的表达:
立即数(idata)
寄存器
段地址(SA)和偏移地址(EA)
4、寻址方式:
5、指令处理的数据长度:
寄存器指明;X ptr指明(X可以为word、byte)
6、div指令:
div reg
div 内存单元
除数为8位:则被除数为16位,默认在AX中;结果:AL存储商,AH存储余数
除数为16位:则被除数为32位,默认在DX和AX中,DX存放高16位,AX存放低16位;结果:AX存储商、DX存储余数
7、伪指令dd:定义双字类型(dword)
8、dup:配合db\dw\dd等使用,进行数据的重复,db 3 dup(0)等价于db 0,0,0
相关文章推荐
- 开源操作系统和必备工具网站收集
- jQuery常用数据处理方法小结
- g++编译 参数 .
- 函数调用时函数栈状态分析
- 汇编调用c函数为什么要设置栈
- 汇编指令大全【转】
- 理解ORG指令
- X86汇编详解
- 汇编指令集
- __asm__ __volatile__内嵌汇编用法简述
- 这是我转载摘录的一篇《学习汇编的重要性》
- 8086汇编算术运算指令
- 8086汇编-转移指令
- ARM汇编EQU伪指令
- ARM汇编AREA伪指令
- 关于signed和unsigned的%d和%u
- 学习机器学习 数据处理时 找到的这些链接 可以在上面下载到开源的研究数据数据
- 想请教如何深入学习汇编
- 汇编小抄:常用指令
- 《Linux 内核分析》课程作业(1)——计算机基本原理和汇编基础