x86汇编代码记录

一、汇编代码如何执行

  1. 编译 masm a.asm
  2. 链接 link a.obj
  3. 执行 a.exe

二、编码注意事项

  1. 写函数时,用到的寄存器,最好不要破坏原有的值,所以一般把用到的寄存器先push,退出函数前再按相反的顺序pop出来。
fun1 proc near
	push ax
	push bx

	;使用ax,bx做一些操作
	
	pop bx
	pop ax
	ret
fun1 endp

三、汇编练习代码

  1. 设计程序。实现Y=2X+3,X是一位十进制数。要求X从键盘输入,在下一行上显示’Y=2X+3=’ 以及十进制计算结果。
.model small
.data
	mess1 db 'input x:','$'		;输出字符串要以$结尾
	mess2 db 0ah,0dh,'y=2x+3=$'	;0ah,0dh就是回车换行
.stack 100h
.code
start:
	mov ax,@data
	mov ds,ax

	mov dx,offset mess1
	mov ah,9
	int 21h
	
	mov ah,1
	int 21h
	sub al,30h
	shl al,1
	add al,3
	mov ah,0
	mov bl,10
	div bl
	add ax,3030h
	mov bx,ax

	mov dx,offset mess2
	mov ah,9
	int 21h
	
	mov ah,2
	mov dl,bl
	int 21h
	mov dl,bh
	int 21h
	
	mov ah,4ch
	int 21h
end start 

  1. 计算 Y=5X-18,如果结果为负,求绝对值。并显示十进制结果。
.model small
.data
mess1 db 'input string:','$'
buffer db 64,?,64 dup(?)		;字符串缓冲区
crlf db 0ah,0dh,'output:$'				;回车换行,字符串要以$结尾

.code
start:
	mov ax,@data
	mov ds,ax

	lea dx,mess1
	mov ah,09h
	int 21h

	;输入字符串
	mov dx,offset buffer
	mov ah,0ah
	int 21h

	mov si,1
	mov al,buffer[si]	
	add al,2
	mov ah,0
	mov si,ax
	mov buffer[si],24h			;在字符串最后面加上$

	mov ah,9
	mov dx,offset crlf
	int 21h

	mov ah,9 
	mov dx,offset buffer
	int 21h


	mov ah,4ch
	int 21h

end start
  1. 从键盘输入一串字符,如果是数字存入NUMB单元,如果是字母,将大写字母存入CAPI单元,小写字母存入LETT单元,分别统计个数,输入回车时退出。
.model small

.data
	numb db 10 dup(?)
	capi db 10 dup(?)
	lett db 10 dup(?)

	numbCount dw ?
	capiCount dw ?
	lettCount dw ?

	m
  • 3
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值