lab 6
(1)
完成7.9 中的问题
编程, 将 datasg 段中每个单词的首字母字母改成大写字母
assume cs:codesg,ss:stacksg,ds:datasgstacksg segmentdw 0,0,0,0,0,0,0,0stacksg endsdatasg segmentdb '1. display 'db '2. brows 'db '3. replace 'db '4. modify 'datasg endscodesg segmentstart: mov ax,datasgmov ds,axmov cx,4mov bx,2s: and ds:[bx], 1101111111111111badd bx,16loop smov ax,4c00hint 21hcodesg endsend start

(2)
编程, 将 datasg 段中每个单词的前四个字母改成大写字母
assume cs:codesg,ss:stacksg,ds:datasgstacksg segmentdw 0,0,0,0,0,0,0,0 ;16个字节作为 cx 的暂存区stacksg endsdatasg segmentdb '1. display 'db '2. brows 'db '3. replace 'db '4. modify 'datasg endscodesg segmentstart: mov ax,datasgmov ds,axmov ax,stacksgmov ss,axmov sp,16mov bx,0mov cx,4r: push cxmov cx,4mov si,0c: mov al,ds:[bx+si+3]and al,11011111bmov ds:3[bx+si],alinc siloop cpop cxadd bx,16loop rmov ax,4c00hint 21hcodesg endsend start
分析&总结
双循环, 可以用栈结构来暂存 cx的值, 如果是多个循环, 可以用sp 去改变暂存区的位置,
对于单字节的处理,
可以先用al 等可拆为单字节的寄存器 处理
然后再回 内存
