汇编命令例题及debug调试

来源:互联网 发布:耐克官网和淘宝旗舰店 编辑:程序博客网 时间:2024/05/19 16:21

由于程序原先实在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 segmenthello db'hello,world!',0dh,0ah,'$'  ;分别是字符串,回车,换行,结束符data endsstack1 segment para stack    ;堆栈段先设置个100防止程序溢出dw 100 dup(?)stack1 endscode segmentassume cs:code,ds:data,ss:stack1start: mov ax,datamov ds,axlea dx,hellomov ah,09h              ;09h显示字符串功能int 21hmov ah,4chint 21h             ;4ch结束功能code endsend start



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

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

data segmentsh dw 1234hdata endscode segmentassume cs:code,ds:datastart:mov bx,datamov ds,bxmov ax,shmov bx,shmov cx,shmov dx,shand ax,000fh          ;屏蔽高12位mov cl,4             ;循环移位计数器是cx,所以送cl 4次shr bx,cland bx,000fhmov cl,8shr cx,cland cx,000fhmov cl,12shr dx,cland dx,000fhmov ah,4chint 21hcode endsend start


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


data segmentmax equ 128            ;相当于 c语言的 typedefinput db max db ?              ;个数db max dup(?)      ;字符串msg db 'Please input a string:'clrf db 0dh,0ah,'$' ;回车换行结束符output db 'The result is:$'data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov ah,09h ;显示msglea dx,msgint 21hmov ah,0ah ;输入字符串lea dx,inputint 21hmov ah,09lea dx,clrf  ;回车换行int 21hmov ah,09hlea dx,output  ;提示字符串int 21hmov ah,09lea dx,clrf   int 21hmov cl,input+1 ;是input+1的偏址,实际输入字符个数 ,cx是控制循环次数的.mov ch,0mov dl,input+1mov dh,0lea si,input+2 ;input+2为实际输入字符的起始地址add si,dx    ; 起始地址+个数s0: dec si ;SI为最后一个字符的地址 mov ah,02h            ;显示单个字符mov dl,[si]  ;显示dl的内容int 21hloop s0    ;循环在cx=0时结束了mov ah,4chint 21hcode endsend start

 
原创粉丝点击