[汇编语言]实验:应用更灵活的寻址方式来定位内存地址
Posted Wecccccccc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[汇编语言]实验:应用更灵活的寻址方式来定位内存地址相关的知识,希望对你有一定的参考价值。
实验内容:
(1)将datasg段中每个单词的头一个字母改成大写字母。
datasg段中的数据为:
(2)
将datasg段中每个单词的字母改成大写字母。
datasg段中的数据为:
ibm
dec
dos
vax
(3)
将datasg段中每个单词的前四个字母改成大写字母
datasg段中的数据为:
(1)
变量+常量的方式定位内存地址:
代码如下:
assume cs:codesg,ds:datasg
datasg segment
db '1. file '
db '2. edit '
db '3. search '
db '4. view '
db '5. options '
db '6. help '
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov bx,0
mov cx,6
s: mov al,[bx+3]
and al,11011111b
mov [bx+3],al
add bx,16
loop s
mov ax,4c00h
int 21h
codesg ends
end start
(2)
用ds保存cx的值,以达到双层循环的效果。
代码如下:
assume cs:codesg,ds:datasg
datasg segment
db 'ibm '
db 'dec '
db 'dos '
db 'vax '
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0: mov dx,cx
mov si,0
mov cx,3
s: mov al,[bx+si]
and al,11011111b
mov [bx+si],al
inc si
loop s0
add bx,16
mov cx,dx
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
用内存保存cx
代码如下:
assume cs:codesg,ds:datasg
datasg segment
db 'ibm '
db 'dec '
db 'dos '
db 'vax '
db 0 ;定义一个字,用来存放cx
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0: mov ds:[40h],cx
mov si,0
mov cx,3
s: mov al,[bx+si]
and al,11011111b
mov [bx+si],al
inc si
loop s0
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
stacksg ends
codesg segment
start: mov ax,stacksg
mov ss,ax
mov sp,16
mov ax,datasg
mov ds,ax
mov bx,0
mov cx,4
s0: push cx
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
pop cx
loop s0
mov ax,4c00h
int 21h
codesg ends
end start
(3)
代码如下:
assume ds:datasg,ss:stacksg,cs:codesg
stacksg segment
dw 0,0,0,0,0,0,0,0
stacksg ends
datasg segment
db '1. display......'
db '2. brows........'
db '3. replace......'
db '4. modify.......'
datasg ends
codesg segment
start: mov ax,datasg
mov ds,ax
mov ax,stacksg
mov ss,ax
mov sp,16
mov bx,0
mov cx,4
s: push cx
mov cx,4
mov si,0
s0:
mov al,[bx+si+3]
and al,11011111b
mov [bx+si+3],al
inc si
loop s0
add bx,16
pop cx
loop s
mov ax,4c00h
int 21h
codesg ends
end start
以上是关于[汇编语言]实验:应用更灵活的寻址方式来定位内存地址的主要内容,如果未能解决你的问题,请参考以下文章