当前位置:首页 > 汇编语言实验报告
问题7.8
编程,将 datasg 段中的每个单词改为大写字母
申请内存空间:
assume cs:codesg,ds:datasg
datasg segment
db 'ibm ' db 'dec ' db 'dos ' db 'vax '
dw 0 ;定义一个字,用来暂存cx datasg ends
codesg segment
start: mov ax,datasg mov ds,ax
mov bx,0
mov cx,4
s0: mov ds:[40H],cx ;将外层循环的cx值保存在datasg:40H单元中 mov si,0 mov cx,3
s: mov al,[bx+si] and al,11011111B mov [bx+si],al inc si loop s
add bx,16
mov cx,ds:[40H] loop s0
mov ax,4c00h int 21h
codesg ends end start
利用堆栈:
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 'ibm ' db 'dec ' db 'dos ' db 'vax ' datasg ends
stacksg segment
dw 0,0,0,0,0,0,0,0 ;定义一个段,用来做栈段,容量为16个字节 codesg segment start: mov ss,ax mov sp,16 mov ax,datasg mov ds,ax
mov bx,0
mov cx,4
s0: push cx ;将外层循环的cx值压栈 mov si,0
mov cx,3 ;cx设置为内层循环的次数
s: mov al,[bx+si] and al,11011111B mov [bx+si],al inc si loop s
add bx,16
pop cx ;从栈顶弹出原cx的值,恢复cx
loop s0 ;外层循环的loop指令将cx中的计数值减去1
mov ax,4c00h int 21h
codesg ends end start
共分享92篇相关文档