97_editerindos_temp.asm

来自「汇编语言 参考书 包含作业与答案 从入门到精通 通俗易懂」· 汇编 代码 · 共 166 行

ASM
166
字号
.386
.model small
.stack	200
;stack	segment	para	stack
;	DW	200 DUP(?)
;stack	ends
.data
;data	segment	para
	toprow	EQU	08
	botrow	EQU	15
	lefcol	EQU	26
	attrib	DB	?
	row	DB	00
	shadow	DB	19 DUP(0dbh)

	menu	Byte	0c9h,17 DUP(0cdh),0bbh
		Byte	0bah,' Add records	',0bah
		Byte	0bah,' Delete records	',0bah
		Byte	0bah,' Enter orders	',0bah
		Byte	0bah,' Print records	',0bah
		Byte	0bah,' View records	',0bah
		Byte	0c8h,17 DUP(0cdh),0bch
	prompt	Byte	'To select an item,use <Up/Down Arrow>'
		Byte	' and press <Enter>.'
		Byte	13,10,'Press <Esc> to exit.'
;data 	ends

;code	segment	para
;	assume CS:code,DS:data,SS:stack
.code
main	PROC	FAR
	mov	ax,@data
	;mov	ax,data
	mov	ds,ax
	mov	es,ax
	
	call	Q10CLEAR		;满屏
	mov	row,botrow+4		;设置行
A20:
	call	B10MENU
	mov	row,toprow+1
	mov	attrib,16H
	call	D10DISPLY
	call	C10INPUT
	cmp	al,1bH
	jne	A20
	mov	ax,0600H
	call 	Q10CLEAR
	
	mov	ax,4c00h
	INT 21H
main	ENDP

B10MENU	PROC	NEAR
	pusha
	mov	ax,1301H
	mov	bx,0060H
	lea	bp,shadow
	mov	cx,19
	mov	dh,toprow+1
	mov	dl,lefcol+1
B20:
	INT 10H
	inc	dh

	cmp	dh,botrow+2
	jne B20
	mov	attrib,71H
	mov	ax,1300H
	movzx	bx,attrib
	lea	bp,menu
	mov	cx,19
	mov	dh,toprow
	mov	dl,lefcol
B30:
	INT 10H
	ADD	bp,19
	inc	dh
	cmp	dh,botrow+1
	jne B30

	mov	ax,1301H
	movzx	bx,attrib
	lea	bp,prompt
	mov	cx,79
	mov	dh,botrow+4
	mov	dl,00
	INT 10H
	popa
	RET
B10MENU	ENDP

C10INPUT	PROC	NEAR
	pusha
C20:
	mov	ah,10H
	INT 16H
	cmp	ah,50H
	je	C30
	cmp	ah,48H
	je	C40
	cmp	al,0dH
	je	C90
	cmp	ah,1bH
	je	C90
	jmp	C20
C30:
	mov	attrib,71H
	call	D10DISPLY
	inc	row
	cmp	row,botrow-1
	jbe	C50
	mov	row,toprow+1
	jmp	C50
C40:
	mov	attrib,71H
	call	D10DISPLY
	dec	row
	cmp	row,toprow+1
	jae	C50
	mov	row,botrow-1
C50:
	mov	attrib,17H
	call	D10DISPLY
	jmp	C20
C90:
	popa
	RET
C10INPUT ENDP

D10DISPLY	PROC	NEAR
	pusha
	movzx	ax,row
	sub	ax,toprow
	imul	ax,19
	lea	si,menu+1
	add	si,ax

	mov	ax,1300H
	movzx	bx,attrib
	mov	bp,si
	mov	cx,17
	mov	dh,row
	mov	dl,lefcol+1
	INT 10H

	popa
	RET
D10DISPLY ENDP

Q10CLEAR	PROC	NEAR
	pusha
	mov	ax,0600H
	mov	bh,61H
	mov	cx,0000
	mov	dx,184fH
	INT 10H

	popa
	RET
Q10CLEAR ENDP

;code	ENDS
	END	main

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?