您的位置:首页 > 其它

[汇编语言]-第七章 不同的寻址方式的灵活应用

2014-02-27 10:17 387 查看
[idata] 用一个常量来表示地址

[bx] 用一个变量表示地址

[bx+idata] 用一个变量和常量表示地址

[bx+si] 用两个变量表示地址

[bx+si+idata] 用两个变量和一个常量表示地址

;将datasg段中每个单词的头一个字母改为大写字母
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






;将datasg段中的每个单词修改为大写字母
assume cs:codesg,ds:datasg,ss:stacksg
datasg segment
db 'ibm             '
db 'dec             '
db 'doc             '
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




;将datasg段中每个单词的前四个字母改为大写字母
assume cs:codesg, ss:stacksg, ds:datasg
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,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,4

s:  mov al,ds:[bx + 3 + si]
and    al,11011111B
mov    ds:[bx + 3 + si],al
inc    si
loop s

pop cx
add bx,16
loop s0;

mov ax,4c00H
int    21h
codesg ends
end start




一般来讲,在需要暂存数据的时候,我们都应该使用栈.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: