《汇编语言》- 读书笔记 - 第7章-实验6 实践课程中的程序
1. 将课程中所有讲解过的程序上机调试,用 Debug 跟踪其执行过程,并在过程中进一步理解所讲内容。
《汇编语言》- 读书笔记 - 第7章- 更灵活的定位内存地址的方法
2. 编程,完成问题 7.9 中的程序。
assume cs:codesg,ss:stacksg,ds:datasg
stacksg segment ; 占16字节
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment ; 占64字节
db '1. display ' ; 占16字节
db '2. brows ' ; 占16字节
db '3. replace ' ; 占16字节
db '4. modify ' ; 占16字节
datasg ends
codesg segment
start: mov ax, stacksg
mov ss, ax ; 定义栈段
mov sp, 16 ; 定义栈顶指针
mov ax, datasg
mov ds, ax ; 定义数据段
mov bx, 0 ; 行偏移。相当于外层循环的i
mov cx, 4 ; 外层循环,对应4行字符。
fori: push cx ; 外层剩余循环次数压栈保存
mov si, 0
mov cx, 4 ; 内层循环,对应要处理4个字母
forj: mov al, [bx+si+3] ; 字符位置[bx行+从第3个字符开始+当前处理第si个字符]
and al, 11011111b ; 转大写
mov [bx+si+3], al ; 送回内存
inc si ; j++ 下一个字符
loop forj ; cx--; cx != 0 继续循环,内层循环结束
add bx, 16 ; i++ 下一行(每行16所以要偏移16字节)
pop cx ; fori 执行完,回到forj
loop fori ; cx--; cx != 0 继续循环,外层循环结束
mov ax, 4c00h
int 21h
codesg ends
end start