当前位置:网站首页>汇编基础代码示例
汇编基础代码示例
2022-04-23 05:51:00 【Round moon】
字符串传递
data segment
src db "hello!"
data ends
extra segment
new db 6 dup("0")
extra ends
code segment
assume cs:code,ds:data,es:extra
start:
mov ax,data
mov ds,ax
mov ax,extra
mov es,ax
lea si,src
lea di,new
mov cx,6
cld
rep movsb
code ends
end start
输出单个符号
表示输出单个ascii码的值
prog1 segment
assume cs:prog1
start:
mov dl,'?';ASCII码
mov ah,2
int 21h
mov ax,4c00h
int 21h
prog1 ends
end start
求数字平方值
data segment
table db 0,1,4,9,16,25,36,49,64,81
buf db "Please input a number(0~9):",0DH,0AH,"$"
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov dx,offset buf
mov ah,9h
int 21h
mov ah,1
int 21h
and al,0fh
mov bx,offset table
mov ah,0
add bx,ax
mov al,[bx]
mov ax,4c00h
int 21h
code ends
end start
两数之和
data segment
a1 db 56h,78h
a2 db 4fh,9ah
sum db 3 dup(0)
data ends
code segment
assume cs:code,ds:data
begin:
mov ax,data
mov ds,ax
mov bx,0
clc
mov al,a1[bx]
adc al,a2[bx]
mov sum[bx],al
inc bx
mov al,a1[bx]
adc al,a2[bx]
mov sum[bx],al
jnc STOP
inc bx
mov al,1
mov sum[bx],al
STOP:
mov ax,4c00h
int 21h
code ends
end begin
打印成绩单
al存放16进制的成绩
输出对应的成绩
cmp al,60
jb fail
cmp al,85
jae good
mov al,"P"
jmp print
fail:
mov al,'F'
jmp print
good:
mov al,"G"
jmp print
print:
mov dl,al
mov ah,2
int 21h
mov ax,4c00h
int 21h
字符统计
统计数字 大写字母和其他字母的数量
data segment
buf db "PRINT","abc",35h,52h,30h,08h
count equ $-buf
num db 3 dup(0)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ch,count
mov bx,0
mov dx,0
loop1:
mov ah,buf[bx]
cmp ah,30h
jl next
cmp ah,39h
jg abc
inc dh
jmp next
abc:
cmp ah,41h
jl next
cmp ah,5ah
jg next
inc dl
next:
inc bx
dec ch
jnz loop1
mov num,dh
mov num+1,dl
mov ah,count
sub ah,dh
sub ah,dl
mov num+2,ah
mov ax,4c00h
int 21h
code ends
end start
寻找最大值
data segment
save dw 1234h,3200h,4832h,5600h
count equ ($-save)/2
max dw ?
data ends
code segment
assume code:cs,data:ds
start:
mov ax,data
mov ds,ax
mov bx,0
mov cx,count
dec cx
mov dx,save[0]
mov max,dx
again:
add bx,2
mov dx,save[bx]
cmp max,dx
jg next
mov max,dx
next:
loop again
code ends
end start
BCD加法
data segment
A DB 44h,33h,22h,11h
B DB 88h,77h,66h,55h
ans 5 dup(0)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov bx,0
mov cx,4
again:
mov al,A[bx]
add al,B[bx]
daa
mov ans[bx],al
jnc NEXT
add A[bx+1],1
NEXT:
inc bx
loop again
code ends
end start
冒泡排序
data segment
list dw 12,7,19,8,24
count equ ($-list)/2
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,count-1
loop1:
mov dx,cx
mov bx,0
loop2:
mov ax,list[bx]
cmp ax,list[bx+2]
JGE NO_CHANGE
xchg ax,list[bx+2]
mov list[bx],ax
NO_CHANGE:
add bx,2
loop loop2
mov cx,dx
loop loop1
mov ax,4c00h
int 21h
code ends
end start
输出数字
AL位62H对应十进制数字98
Bin_ascii proc near
mov ah,0
mov bl,10
div bl
xchg ah,al
add ax,3030h
mov cx,ax
mov dl,ch
mov ah,2
int 21h
mov dl,cl
int 21h
ret
Bin_ascii endp
存储数字
输出十进制数字,存入bx中
DEC_BIN proc near
mov bx,0
get_char:
mov ah,1
int 21h
cmp al,0dh
je exit
sub al,30h
jl exit
cmp al,9
jg exit
cbw
xchg ax,bx
mov cx,10
mul cx
xchg ax,bx
add bx,ax
jmp get_char
exit:
ret
DEC_BIN endp
输出16进制
将bx中的数据以十六进制输出
BIN_HEX proc near
mov cx,4
begin:
mov dl,bh
shr dl,4
add dl,30h
cmp dl,'9'
jl Display
sub dl,'9'+1
add dl,"A"
Display:
mov ah,2
int 21h
shl bx,4
loop begin
BIN_HEX endp
十六进制转BCD
这里需要注意的是,字节除数的时候,DX是做高八位的
bin_bcd proc near
mov ax,04D2h
cmp ax,9999
jbe tran
jmp exit
tran:
mov dx,0
mov cx,1000
div cx
xchg ax,dx
shl bx,4
add bx,dx
mov dx,0
mov cx,100
div cx
xchg ax,dx
shl bx,4
add bx,dx
mov dx,0
mov dx,0
mov cx,10
div cx
xchg ax,dx
shl bx,4
add bx,dx
mov dx,0
mov cx,1
div cx
xchg ax,dx
shl bx,4
add bx,dx
mov dx,0
exit:
ret
bin_bcd endp
求BCD和
使用过程调用的方法
data segment
num1 db 44h,33h,22h,11h
num2 db 88h,77h,66h,55h
sum db 5 dup(0)
data ends
stack segment stack
dw 50 dup()
top label word
stack ends
code segment
main proc far
assume cs:code,ds:data,ss:stack
start:
mov ax,stack
mov ss,ax
mov sp, offset top
push ds
push 0
mov ax,data
mov ds,ax
mov es,ax
lea si,num1
lea bx,num2
lea di,sum
clc
cld
mov ah,0
mov cx,4
loop1:
call add_b
loop loop1
adc ah,0
mov al,ah
stosb
ret
main endp
add_b proc near
lodsb
adc al,[bx]
daa
stosb
inc bx
ret
add_b endp
code ends
end main
斐波那契
data segment
Fibonacci db 1,1,5 dup()
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,5
mov dh,0
mov dl,1
Loop1:
mov bx,0
mov bl,dh
mov ah,Fibonacci[bx]
mov bl,dl
mov al,Fibonacci[bx]
add ah,al
inc dh
inc dl
inc bx
mov Fibonacci[bx],ah
loop Loop1
code ends
end start
版权声明
本文为[Round moon]所创,转载请带上原文链接,感谢
https://blog.csdn.net/qq_35339563/article/details/121075198
边栏推荐
- Generate random number
- 圆整 round 的一点点小细节
- Round up a little detail of the round
- Opencv uses genericindex for KNN search
- Object array and object pointer
- Matlab calibration board corner detection principle
- Friend function, friend class, class template
- ARM常用汇编指令
- grub boot. S code analysis
- vs中能编译通过,但是会有红色下划线提示未定义标示符问题
猜你喜欢
![[untitled]](/img/03/0ece1ea11558b9b6dd0644bb508987.png)
[untitled]

Programmers can also write novels

搭建jpress个人博客
![[UDS unified diagnostic service] IV. typical diagnostic service (5) - function / component test function unit (routine function unit 0x31)](/img/98/becd691d3d46f74f7666f5cb323eaf.png)
[UDS unified diagnostic service] IV. typical diagnostic service (5) - function / component test function unit (routine function unit 0x31)

【UDS统一诊断服务】三、应用层协议(2)

基于VGG卷积神经网络的图像识别代码实现
![[UDS] unified diagnostic service (UDS)](/img/ed/8c16e4f1136fff95a829be410cab11.png)
[UDS] unified diagnostic service (UDS)

Eigen 学习总结

【UDS统一诊断服务】二、网络层协议(1)— 网络层概述与功能

【UDS统一诊断服务】四、诊断典型服务(2)— 数据传输功能单元
随机推荐
如何读文献
ROS包nmea_navsat_driver读取GPS、北斗定位信息笔记
Make your own small program
【UDS统一诊断服务】一、诊断概述(3)— ISO 15765体系结构
进程间通信-互斥锁
[UDS unified diagnostic service] IV. typical diagnostic service (2) - data transmission function unit
基于SSD的物体检测案例实现
The waterfall waterfall flow of uview realizes single column and loads more
C语言进阶要点笔记5
【UDS统一诊断服务】四、诊断典型服务(4)— 在线编程功能单元(0x34-0x38)
猜数字游戏
对象数组与对象指针
【UDS统一诊断服务】三、应用层协议(1)
Call procedure of function
[UDS unified diagnostic service] i. overview of diagnosis (4) - basic concepts and terms
realsense 选型大对比D455 D435i D415 T265 3D硬件对比
进程管理命令
File viewing commands and user management commands
sqlite编译
基于TensorFlow的线性回归实例