实验6
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db '1. display '
db '2. helloworld '
db '3. replace '
db '4. modify '
datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
codesg segment
start : mov ax,stacksg
mov ss,ax
mov sp,10H
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0 : push cx
mov si,3
mov cx,4
s1 : mov al,[bx+si]
and al,11011111b
mov [bx+si],al
inc si
loop s1
pop cx
add bx,10H
loop s0
mov ax,4c00H
int 21H
codesg ends
end start
======================================================================
第七章笔记
1.位运算指令:
逻辑与:and, 主要用于将操作对象的某位设为0,2个操作数相同位同时为1时,则结果数该位的值为1
逻辑与:and, 主要用于将操作对象的某位设为1,2个操作数相同位只要有一个1,则结果数该位的值为1
2.常用ASCII码:
41H ‘A’,61H ‘a’, 31H ‘1’
3.声明字符时,需要将字符用单引号标明。编译器将字符转换为对应的ASCII码,如 db 'a' 相当于 db 61H
4.字符中字母的转换:
将小写字符和 11011111b 进行 and 运算 ,得到大写字符
将大写字符和 00100000b 进行 or 运算 ,得到小写字符
5.内存的寻址方式:
[bx] :数据段中偏移地址为bx的内存单元
[bx + idata]或者idata[bx]或者[bx].idata :数据段中偏移地址为(bx的值加上idata的值)的内存单元
[bx + si] :数据段中偏移地址为(bx的值加上si的值)的内存单元
[bx + si + idata] :数据段中偏移地址为(bx的值加上si的值再加上idata)的内存单元
6.si 和 di 的功能与 bx 相似,作为偏移地址
7.处理多层循环时,可将 cx 的值存放在内存单元中(暂时保存可以放入栈中)
- [xuer2016] 空格可以用条件跳转去掉,有时间再改下 01/03 18:43
- [xuer2016] 最后一题,应该是mov sp,16 11/11 22:47
- [xuer2016] 恩,明白了,谢谢老师 11/04 02:17
- [fpamc] 不是看地址,是看那两条指令的字节数, 11/03 11:46
- [fpamc] 恩~第四章咯。 10/30 21:09
- [fpamc] 记得加H,不然会被认为是10进制。 10/25 20:58
- [fpamc] 做笔记会加深学习的印象。 10/25 20:55
- [xuer2016] 谢谢,我弄错了 应该是 1H * 10H + 偏移地址 10/25 09:45
- [fpamc] 物理地址=起始地址[起始地址=段地址*16(也就是10h)]+偏移地址 10/25 07:29
- [xuer2016] 感谢指出错误 10/20 09:25