汇编学习历程(字符串输入)

来源:互联网 发布:淘宝抢购验证码 编辑:程序博客网 时间:2024/05/16 03:17
assume cs:code,ds:data,ss:stackcode segmentstart:mov ax,datamov ds,axmov ax,stackmov ss,axmov sp,400; 设置相关寄存器input_Start:mov ah,0int 16h;读入一个字符cmp ah,01chje input_End;是否为回车,是则跳cmp ah,0ehje input_backspace;是否为退出,是则跳mov ah,0call sub_StrStack;字符入栈mov ah,2call sub_StrStack;显示堆栈内所有字符jmp input_Start;读取下一个字符input_backspace:mov ah,1call sub_StrStack;弹出字符mov ah,2call sub_StrStack;显示栈内所有字符jmp input_Start;读取下一个字符input_End:mov ax,4c00h;程序返回int 21h;功能:实现字符入栈,出栈,和显示;参数:ah=0为字符入栈,al=要入栈的字符;ah=1为字符出栈,al=出栈字符;ah=1为字符显示;返回值:无sub_StrStack:jmp begintable dw str_push,str_pop,str_showbegin:push espush bxpush cx push dxpushf;保存堆栈cmp ah,2ja exit;效验子程序功能号,大于2则退出mov bl,ahmov bh,0add bx,bx;定位子程序地址jmp word ptr table[bx];跳到子程序str_push:mov bx,word ptr topmov byte ptr string[bx],al;保存字符inc word ptr top;增加栈顶指针jmp exitstr_pop:dec word ptr top;修改栈顶指针mov bx,word ptr topmov al,byte ptr string[bx];读出字符mov byte ptr string[bx],0;删除字符jmp exitstr_show:mov bx,word ptr topmov byte ptr string[bx],'$';设置显示结尾;-----------------mov ax,0b800hmov es,axmov bx,0mov cx,2000clear:mov byte ptr es:[bx],' 'add bx,2loop clear;次循环用于清除屏幕显存内容;-------------------mov ah,2;置光标mov bh,0;第0页mov dh,0;第0行mov dl,0;第0列int 10h;调用中断置光标到指定位置mov dx,offset string;设置ds:dx指向要显示字符串首地址mov ah,9int 21h;调用中断开始显示jmp exitexit:popfpop dxpop cxpop bxpop es;恢复堆栈retcode endsdata segmenttop dw 0;栈顶指针string dw 4000 dup (0);字符保存区域data endsstack segment dw 200 dup(0)stack endsend start

原创粉丝点击