汇编——16位汇编&调试&一些练习代码
2022/2/7 11:12:42
本文主要是介绍汇编——16位汇编&调试&一些练习代码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
- 编译:ml 1.asm
- 调试:debug 1.exe
- 调试命令:
r 查看当前位置代码;p 单步步过;t 单步步入;u 查看附近代码
d 0b3b 查看0b3b位置内存;g 运行程序 - 16位汇编代码基本结构
assume cs:code,ds:data data segment buffer db 'xxxx$' data ends code segment rkmain proc mov ax,data mov ds,ax mov dx,offset buffer mov ah,09H int 21H mov ah,07H int 21H mov ax,4c00H int 21H rkmain endp start:call rkmain code ends end start
-
16位汇编声明字符串
buffer db 0DH,0AH, xxxxx$'
这里db是define byte的缩写,意为buffer变量定义为一字节长度
0ah和0dh组合起来是换行的意思,$经常时字符串的结束标记 -
段寄存器的赋值
必须通过通用寄存器。
若使用mov ax,data是立即数寻址方式,而立即数是不允许直接送段寄存器的。所以需要通过先送立即数到寄存器,再从寄存器到段寄存器,即mov ax,data mov ds,ax
-
offset
回送变量或标号的偏移地址值,功能和lea指令类似,效率更高一些 -
DOS的0AH号功能调用
比如在数据段有如下定义:
buff db 5,0,5 dup(0)
这里的5表示字符串最大长度为5个字符;0占用的那个字节在调用结束后会被放入实际输入的字符个数;5 dup(0)开辟5个字节单元,存放输入的字符的ASCII码。
在代码段用下面的指令进行调用:
lea dx,buff
mov ah,0ah
int 21h
运行时输入“ABC”
则调用结束后,内存的buff单元的内容应该是:05H,03H,41H,42H,43H,00H,00H
这篇关于汇编——16位汇编&调试&一些练习代码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-23Springboot应用的多环境打包入门
- 2024-11-23Springboot应用的生产发布入门教程
- 2024-11-23Python编程入门指南
- 2024-11-23Java创业入门:从零开始的编程之旅
- 2024-11-23Java创业入门:新手必读的Java编程与创业指南
- 2024-11-23Java对接阿里云智能语音服务入门详解
- 2024-11-23Java对接阿里云智能语音服务入门教程
- 2024-11-23JAVA对接阿里云智能语音服务入门教程
- 2024-11-23Java副业入门:初学者的简单教程
- 2024-11-23JAVA副业入门:初学者的实战指南