汇编命令例题及debug调试

由于程序原先实在win32位机上设计的,现在用win10需要下载dosbox 软件,设置下载好相应的debug.exe,masm.exe,link.exe就可以开始debug命令调试啦~

先熟悉debug的几个最最常用命令:

-u 反汇编显示语句指令

-t 单步调试

-d 显示内存内容

-r 显示寄存器内容

-g 运行

-q 退出

调试过程:记事本写一个汇编程序,改成.asm后缀,进入dosbox 输入 masm xx.asm 编译,link xx.obj ,debug xx.exe 就可以进入调试页面了。


第一个例题 ,汇编语言的hello world!

data segment
hello db'hello,world!',0dh,0ah,'$'  ;分别是字符串,回车,换行,结束符
data ends

stack1 segment para stack    ;堆栈段先设置个100防止程序溢出
	dw 100 dup(?)
stack1 ends

code segment
	assume cs:code,ds:data,ss:stack1
start: mov ax,data	
	mov ds,ax
	lea dx,hello
	mov ah,09h              ;09h显示字符串功能
	int 21h
	mov ah,4ch
	int 21h             ;4ch结束功能
code ends
	end start



第二题    AX寄存器中的16位数分成4组,每组4位,然后将这四组数分别放在ALBLCLDL中。

这道题能很好的练习四个寄存器的存储结构。

data segment
	sh dw 1234h
data ends
code segment
	assume cs:code,ds:data
	start:
	mov bx,data
	mov ds,bx
	mov ax,sh
	mov bx,sh
	mov cx,sh
	mov dx,sh
	and ax,000fh          ;屏蔽高12位
	mov cl,4             ;循环移位计数器是cx,所以送cl 4次
	shr bx,cl
	and bx,000fh
	mov cl,8
	shr cx,cl
	and cx,000fh
	mov cl,12
	shr dx,cl
	and dx,000fh
	mov ah,4ch
	int 21h
code ends
	end start


第三题   从键盘输入一串字符,然后在下一行以相反次序显示出来


data segment
max equ 128            ;相当于 c语言的 typedef
input db max 
db ?              ;个数
db max dup(?)      ;字符串
msg db 'Please input a string:'
clrf db 0dh,0ah,'$' ;回车换行结束符
output db 'The result is:$'
data ends

code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax

mov ah,09h ;显示msg
lea dx,msg
int 21h

mov ah,0ah ;输入字符串
lea dx,input
int 21h

mov ah,09
lea dx,clrf  ;回车换行
int 21h
mov ah,09h
lea dx,output  ;提示字符串
int 21h
mov ah,09
lea dx,clrf   
int 21h
mov cl,input+1 ;是input+1的偏址,实际输入字符个数 ,cx是控制循环次数的.
mov ch,0
mov dl,input+1
mov dh,0
lea si,input+2 ;input+2为实际输入字符的起始地址
add si,dx    ; 起始地址+个数
s0: dec si ;SI为最后一个字符的地址 
	mov ah,02h            ;显示单个字符
	mov dl,[si]  ;显示dl的内容
	int 21h
	loop s0    ;循环在cx=0时结束了

mov ah,4ch
int 21h
code ends
end start





                
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值