汇编语言王爽第四版第七章(实验六)

第七章、更灵活的定位内存地址的方法

汇编语言所有实验地址

本文仅展示个别程序的debug图片,其实书上代码讲的很详细了,大家可以自己debug看一看

7.4大小写转换问题
;大写字母第五位是0,小写字母第五位是1
assume cs:codesg, ds:datasg

datasg segment
	db 'BaSic' 
	db 'iNFOrMaTiOn'
datasg ends

codesg segment
start: mov ax,datasg
	   mov ds,ax	;ds -> datasg
	   mov bx,0
	   mov cx,5
	s: mov al,[bx]
       and al,11011111B ;	将第五位变成0
       mov [bx],al
       inc bx
       loop s 
       
       mov ax,5			;归位
	   mov cx,11
   s0: mov al,[bx]
   	   or al,00100000B
   	   mov [bx],al
   	   inc bx
   	   loop s0
   	   
   	   mov ax,4c00h
   	   int 21h
   	 
codesg ends
end start 


Debug看一下

在这里插入图片描述

原本数据内存中,显示的大小写是很不均匀,没有规则的

在这里插入图片描述

我们执行之后查看内存中的内容,发现大小写已经变换完成 😃

用类似于高级语言中数组的方式书写代码

assume cs:codefsg, ds,datasg

datasg segment
	db 'BaSic'
	db 'MinIX'
	
datasg ends

codesg segment
start:
	mov ax,datasg
	mov ds,ax
	mov bx,0
	mov cx,5
	
s:
	mov al,[bx]
	and al,1101111b
	mov [bx],al
	
	mov al,[5+bx]			;第二个字符串
	or al,00100000b
	mov [5+bx],al
	inc bx
	loop s
	
	mov ax,4c00h
	int 21h
codesg ends
end start 

问题7.9

assume cs:code,ds:data,ss:stack
stack segment
 dw 0,0,0,0,0,0,0,0
stack ends

data segment
 db '1. display      '
 db '2. brows        '
 db '3. replace      '
 db '4. modify       '
data ends

code segment
start:
mov ax,stack
mov ss,ax
mov sp,16

mov ax,data
mov ds,ax

mov bx,0
mov cx,4			;外层循环的cx

s0:
push cx
mov si,0

mov cx,4
s1:
mov al,ds:[bx+si+3]			;从第三个位置开始
and al,11011111b
mov ds:[bx+si+3],al
inc si
loop s1

add bx,16
pop cx
loop s0

mov ax,4c00h
int 21h
code ends
end start

debug如下

在这里插入图片描述

成功了 😃 😃 😃 😦😦😦

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值