汇编语言王爽第四版17.3完程可运行可调试

汇编语言王爽第四版17.3节完整程序,可调试,可运行。

最基本的字符串输入程序,具备以下功能:

1、在输入的同时需要显示这个字符串;

2、输入回车符后,一个字符串的输入结束;

3、能够删除已经输入的字符。

完整程序代码如下,可运行,可调试:

assume cs:code,ds:data

data segment

	keys db 256 dup(0)

data ends

code segment

start:
	mov ax,data
	mov ds,ax
	mov dh,10
s:	
	mov si,offset keys
	mov di,si
	mov dl,12
	call getStr
	inc dh
	cmp byte ptr [di],'q'
	jne s
	cmp byte ptr [di+1],0
	je exit
	jmp s
exit:
	mov ax,4c00h
	int 21h
		
getStr:
	push ax
getStrLoop:
	mov ah,0
	int 16h
	cmp al,20h
	jb getStrCtrl
	mov ah,0
	call charStack
	mov ah,2
	call charStack
	jmp getStrLoop
getStrCtrl:
	cmp ah,0eh
	je getStrBack
	cmp ah,1ch
	je getStrEnter
	jmp getStrLoop
getStrBack:
	mov ah,1
	call charStack
	mov ah,2
	call charStack
	jmp getStrLoop
getStrEnter:
	mov al,0
	mov ah,0
	call charStack
	mov ah,2
	call charStack
	mov ah,3
	call charStack
	pop ax
	ret

charStack:
; 功能:字符栈的入栈、出栈和显示
; 参数:(ah)=功能号,0表示入栈,1表示出栈,2表示显示, 3表示初始化
; 		ds:si指向字符栈空间
;		对于0号功能:(al)=入栈字符
; 		对于1号功能:(al)=返回的字符
; 		对于2号功能:(dh)、(dl)=字符串在屏幕上显示的行、列位置。
	jmp short charStart
	table 	dw	charPush, charPop, charShow, charInit
	top		dw	0		;栈顶
charStart:
	push bx
	push dx
	push di
	push es
	
	cmp ah,3
	ja charRet
	mov bl,ah
	mov bh,0
	add bx,bx
	jmp word ptr table[bx]

charPush:
	mov bx,top
	mov [si][bx],al
	inc top
	jmp charRet

charPop:
	cmp top,0
	jbe charRet
	dec top
	mov bx,top
	mov al,[si][bx]
	jmp charRet

charShow:
	mov bx,0b800h
	mov es,bx
	mov al,160
	mul dh
	mov di,ax
	add dl,dl
	mov dh,0
	add di,dx

	mov bx,0
charLoop:
	cmp bx,top
	jne charNext
	mov byte ptr es:[di],' '
	jmp charRet
charNext:
	mov al,[si][bx]	
	mov es:[di],al
	mov byte ptr es:[di+1],2
	mov byte ptr es:[di+2],' '
	inc bx
	add di,2
	jmp charLoop
charInit:
	mov top,0

charRet:
	pop es
	pop di
	pop dx
	pop bx
	ret 

code ends

end start

编译、运行:

C:\>masm pg02;
C:\>link pg02;
C:\>pg02
C:\>

界面操作:

1、输入的字符串将在屏幕10行12列位置显示;
2、可以用退格键删除末尾的字符;
3、回车键结束当前字符串;
4、从下一行开始进行下一个字符串的输入;
5、输入:q<CR>,即字符'q'+回车键,就可以退出程序。

运行效果如下图所示

(全文完)

相关推荐
tekin3 天前
macos vscode+dosbox 8086汇编语言开发调试环境搭建方法 包含所有相关的工具的下载和安装配置方法
macos·dos·汇编语言·dosbox·tasm·汇编语言开发环境
安红豆.5 天前
特殊的 BASE64 1
ctf·base64·汇编语言·逆向工程
2401_8582861117 天前
汇编实现从1加到1000(《X86汇编语言 从实模式到保护模式(第2版》) 第135页第2题解答)
汇编·nasm·汇编语言·x86·virtualbox·8086·virtual box
Terasic友晶科技22 天前
第47篇 汇编语言实现中断<三>
汇编语言·中断
黄卷青灯771 个月前
汇编语言知识基础介绍
开发语言·汇编语言
codists1 个月前
《Programming from the Ground Up》阅读笔记:p103-p116
编程人·汇编语言
Kryo3 个月前
人人都能成为汇编高手 —— Android ARM64调试 从入门到入土
android·汇编语言
喜豆老爹4 个月前
CPU内部结构窥探·「2」
arm·汇编语言
qq_459730035 个月前
汇编语言(详解)
汇编语言
kaixin_啊啊6 个月前
汇编语言知识点整理(应付考试专用,想学习找其他的)
学习·汇编语言