汇编语言程度题:从键盘上输入字符0~9,要求从屏幕上输出其ASCII值(使用查表程序)

第二题 用汇编语言编写程序:求n!

; 下面的程序是16位汇编,编译通过,运行正确。

; Program Name: Digi_ASC.ASM

Digi_ASC SEGMENT
ASSUME CS:Digi_ASC,DS:Digi_ASC
ORG 100H

Start: JMP Begin

; 功能:取光标位置
; 入口:无
; 出口:DH=行号,DL=列号
; 用法:GetCursor
GetCursor Macro
PUSH AX
PUSH BX
XOR BX,BX
MOV AH,3
INT 10H
POP BX
POP AX
EndM

; 功能:置光标位置
; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)
; 用法:SetCursor Cursor_Row,Cursor_Col
SetCursor Macro Cursor_Row,Cursor_Col
PUSH BX
PUSH AX
MOV DH,Cursor_Row
MOV DL,Cursor_Col
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
EndM

Accept_Num DB 'Please input a number(0-9),Press Esc to Exit:$'
DigitalChr DB 'The ASCII of '
DigASCII DB 0,' is ',2 DUP(' '),'H.$' ; 数字的ASCII数字
ASCII_Tab DB '0123456789'
Exit_Mark DB 0

; Subroutine
GLOBAL Get_Num:NEAR ;从键盘接受一个数字
Get_Num Proc Near
MOV AH,9
INT 21H
@@InputChr:
MOV AH,1
INT 21H
CMP AL,27 ;Esc?
JZ @@Set_Exit
CMP AL,'0'
JB @@InputChr
CMP AL,'9'
JG @@InputChr
RET
@@Set_Exit:
INC Exit_Mark ;置退出标志
Ret
Get_Num EndP

Begin: MOV AX,3
INT 10H ;设置视频显示方式为80x25 16色文本方式
AcceptNum:LEA DX,Accept_Num ;提示输入一个1位数字符串地址
Call Get_Num ;从键盘接受一个数字
CMP Exit_Mark,1
JZ Exit_Proc ;若退出标志置位,则结束程序
MOV DigASCII,AL ;保存这个1位数
AND AL,0FH
LEA BX,ASCII_Tab
XLAT
CBW
MOV CX,4
SHL AX,CL
SHR AL,CL
OR AX,3030h
XCHG AH,AL
MOV WORD PTR DigASCII[5],AX

GetCursor
INC DH ;行号增1
INC DH ;行号增1
SetCursor DH,0
LEA DX,DigitalChr ;显示这个数的ASCII码
MOV AH,9
INT 21H
GetCursor
INC DH ;行号增1
INC DH ;行号增1
SetCursor DH,0
JMP AcceptNum

Exit_Proc:MOV AX,4C00H ;结束程序
INT 21H

Digi_ASC ENDS
END Start

补充回答:第二题,请另行提问。
温馨提示:答案为网友推荐,仅供参考
相似回答