assume cs:code, ds:data
data segment
buf db 12,89,34,87,45,98,56,76,65,43
cnt equ $-buf
data ends
code segment
start:
mov ax, data
mov ds, ax
mov si, offset buf
mov cl, cnt
dec cl
mov ch, 0
$0:
mov al, [si]
push cx
mov di, si
@0:
inc di
mov dl, [di]
cmp al, dl
jle cont
xchg ax, dx
mov [si], al
mov [di], dl
cont:
loop @0
pop cx
inc si
loop $0
mov cl, cnt
mov si, offset buf
$1:
mov al, [si]
call print
inc si
loop $1
mov ah, 4ch
int 21h
print proc near
push cx
xor cx, cx
mov bx, 10
cbw
q0:
xor dx, dx
div bx
xor dx, 0e30h
push dx
inc cx
cmp ax, 0
jnz q0
q1:
pop ax
int 10h
loop q1
mov al, 20h
int 10h
pop cx
ret
print endp
code ends
end start
针对某个字母,“与”上1101 1111,可变换成大写;
针对某个字母,“或”上0010 0000,可变换成小写;
针对某个字母,“异或”上0010 0000,可进行大小写互换。
在要指定代码的存储空间不是一件特别简单的事情,尤其是你想为某个或某几个函数指定具体的地址。
1,编译器只有在最终的Link阶段才会为代码和数据分配内存地址,因此指定代码段的地址一般是通过写一个link脚本来进行的。Link阶段时,编译器的Linker会读取你写的Link脚本,并且按照脚本的规定给代码分配地址。
2,根据ARM开发工具的不同,link脚本的语法和形式也有所不同。ARM MDK,ARM ADS,Eclips+GCC,Linux GCC, ARM Realview等开发工具都支持Link脚本。
如果你英文还可以,建议你直接找到开发工具的Help手册去研究。如果你英语实在不行,也可以把开发工具名称和你代码的具体情况告诉我,我帮你看看。
以上就是关于汇编语言程序全部的内容,包括:汇编语言程序、在汇编语言 程序中大小写字母转换采用了什么算法、在ARM汇编编程中如何指定某段程序的存储地址等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)