汇编语言实验报告 联系客服

发布时间 : 星期日 文章汇编语言实验报告更新完毕开始阅读bdf329d3c850ad02de8041ee

问题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