|
楼主 |
发表于 2015-12-11 13:53:20
|
显示全部楼层
[问题7.7]将datasg段中每个单词改为大写
本帖最后由 yundi 于 2015-12-11 14:03 编辑
[问题7.7]将datasg中每个单词改为大写
两个循环,外循环对应行数,内循环处理第x列的字母,要两个变量记录行列,可以bx+si,bx+di,但不可以si+di!
注意cx的值内外循环的不同,另要一个变量保存外循环cx值,弃寄存器用内存保存变量的方法,栈的应用的铺垫。
书上两次改进:1次在datasg中划个内存位置保存外循环cx,2次是用stacksg段
- assume cs:codesg,ds:datasg
- datasg segment
- db 'file............'
- db 'edit............'
- db 'sear............'
- db 'view............'
- db 'opti............'
- db 'help............'
- datasg ends
- codesg segment
- start: mov ax,datasg
- mov ds,ax
- mov bx,0
- mov cx,6
- s1:
- mov di,0
- mov dx,cx;保存外循环次数
- mov cx,4
- s2: mov al,ds:[bx][di];内循环改单词
- and al,11011111b
- mov ds:[bx][di],al
- inc di
- loop s2
- add bx,16
- mov cx,dx;恢复外循环次数
- loop s1
- mov ax,4c00h
- int 21h
- codesg ends
- end start
复制代码 |
评分
-
查看全部评分
|