《汇编语言(王爽)》第七、八章【总结】

时间:2022-02-01 04:54:13

第七章 更灵活的定位内存地址的方法

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