汇编代码->汇编-obj文件->Link->exe 16位的exe
32位的操作系统一般是兼容16位的
64位的不行(不同位数的操作系统的汇编语言的语法都是不同的)
在没有别的特殊指令时,代码的运行从代码段的0开始。
在16位汇编语言中,如果想要让程序安全退出,就要使用一个中断进行退出。
cs是代码段寄存器
mov是传送指令
ax是16位通用寄存器
4c00H:加上H是16进制,不加H是十进制,如果十六进制的这个数据是以字母开头的,那么就要在开头加上0,因为汇编语言是不支持以字母开头的。例如:A4c00H -> 0A4c00H
mov ax,4c00Hint 21H
以上两行代码进行一个“return”的功能操作
assume cs:code ;指定cs代码段名叫code
code segment ;代码段的起始位置
rkvir proc ;函数起始ret ;返回指令
rkvir endp ;函数结束
rkmain procmov ax,4c00H ;将4c00H放到ax这个通用寄存器中进行保存int 21H ;执行一个21号中断
rkmain endp
start: call rkvir ;从当前位置跳转到指定指令
code ends ;代码段的结束位置
end start ;所有指令结束加上end
数据传送指令 MOV
格式: MOV OPRD1,OPRD2
功能: 本指令将一个源操作数送到目的操作数中,即将OPRD1传入OPRD2.
加法:
add:两数相加
inc: 自增
减法:
sub:两数相减
dec:自减
循环:
loop循环
assume cs:code ;指定cs代码段名叫code
code segment ;代码段的起始位置
rkmain proc ;函数起始mov ax,1mov bx,2add bx,axmov bx,axmov ax,4c00Hint 21H
rkmain endp ;函数结束
start: call rkmain ;从当前位置跳转到指定指令
code ends ;代码段的结束位置
end start ;所有指令结束加上end
assume cs:code ;指定cs代码段名叫code
code segment ;代码段的起始位置
rkmain proc ;函数起始mov ax,1inc axmov bx,axmov ax,4c00Hint 21H
rkmain endp ;函数结束
start: call rkmain ;从当前位置跳转到指定指令
code ends ;代码段的结束位置
end start ;所有指令结束加上end
assume cs:code ;指定cs代码段名叫code
code segment ;代码段的起始位置
rkmain proc ;函数起始mov ax,2mov bx,1sub ax,bxdec axmov bx,axmov ax,4c00Hint 21H
rkmain endp ;函数结束
start: call rkmain ;从当前位置跳转到指定指令
code ends ;代码段的结束位置
end start ;所有指令结束加上end
使用 cx计数器对循环次数进行记录
assume cs:code ;指定cs代码段名叫code
code segment ;代码段的起始位置
rkmain proc ;函数起始mov ax,0mov cx,10 ;想循环几次就给cx一个值
rk:inc axloop rkmov bx,axmov ax,4c00Hint 21H
rkmain endp ;函数结束
start: call rkmain ;从当前位置跳转到指定指令
code ends ;代码段的结束位置
end start ;所有指令结束加上end
本文发布于:2024-02-02 07:24:02,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170682983942253.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |