设计汇编语言程序 要求在屏幕上输入任意单个字符
要求在屏幕上输入任意单个字符,然后再屏幕上显示出该字符的ascii码(必须可以循环显示),如图所示在emu8086的exe模板...
要求在屏幕上输入任意单个字符,然后再屏幕上显示出该字符的ascii码(必须可以循环显示),如图所示
在emu8086的exe模板 展开
在emu8086的exe模板 展开
3个回答
展开全部
;---------------------------------
DATA SEGMENT
MSG1 DB 13, 10, 'Please input a char (Enter will finish program) : ', '$'
DATA ENDS
;---------------------------------
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
;---------------------------------
LOP:
MOV DX, OFFSET MSG1
MOV AH, 9 ;9号功能调用,显示提示.
INT 21H ;显示.
MOV AH, 1 ;1号功能调用,键入、显示.
INT 21H ;
CMP AL, 13
JZ EXIT ;回车就结束.
PUSH AX
MOV AH, 2
MOV DL, 32 ;空格.
INT 21H
INT 21H
POP AX
CALL CHANUM ;符号转换成数字.
JMP LOP
;---------------------------------
EXIT:
MOV AH, 4CH
INT 21H
;---------------------------------
CHANUM: ;显示AL中的数字.
MOV CX, 0010 ;10:
CNS:
MOV AH, 0
DIV CL
MOV DL, AH
ADD DL, 30H
PUSH DX
INC CH
CMP AL, 0
JNZ CNS
DDD:
POP DX
MOV AH, 2
INT 21H
DEC CH
JNZ DDD
RET
;---------------------------------
CODE ENDS
END START
参考:
http://hi.baidu.com/do_sermon/item/2fae6f90efe1c04cf042156f
DATA SEGMENT
MSG1 DB 13, 10, 'Please input a char (Enter will finish program) : ', '$'
DATA ENDS
;---------------------------------
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX
;---------------------------------
LOP:
MOV DX, OFFSET MSG1
MOV AH, 9 ;9号功能调用,显示提示.
INT 21H ;显示.
MOV AH, 1 ;1号功能调用,键入、显示.
INT 21H ;
CMP AL, 13
JZ EXIT ;回车就结束.
PUSH AX
MOV AH, 2
MOV DL, 32 ;空格.
INT 21H
INT 21H
POP AX
CALL CHANUM ;符号转换成数字.
JMP LOP
;---------------------------------
EXIT:
MOV AH, 4CH
INT 21H
;---------------------------------
CHANUM: ;显示AL中的数字.
MOV CX, 0010 ;10:
CNS:
MOV AH, 0
DIV CL
MOV DL, AH
ADD DL, 30H
PUSH DX
INC CH
CMP AL, 0
JNZ CNS
DDD:
POP DX
MOV AH, 2
INT 21H
DEC CH
JNZ DDD
RET
;---------------------------------
CODE ENDS
END START
参考:
http://hi.baidu.com/do_sermon/item/2fae6f90efe1c04cf042156f
更多追问追答
追问
可以每一小段都帮我解释一下吗
追答
本程序,即可在emu8086 中,编译、执行。
64位的汇编,就没有必要研究了。
有了 VC++,一般,什么就都可以做了。
比汇编,方便多了。
楼主还真以为,将来,用汇编语言,来编写实用程序吗?
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
输入字符可以用BIOS的INT16H,或者DOS的INT21H,后者支持字符串输入,但有缓冲器大小限制。
所以这个任意单个字符,如果不包含CTRL-C即中断字符的话,可以用INT16H AH=00H
即
MOV AH,00H
INT 16H
调用完成后,AL中为输入的字符,AH中为扫描码,可以包含是否按了SHIFT、CTRL,ALT等,允许检测功能键,具体值可以编一程序逐一测试。
所以这个任意单个字符,如果不包含CTRL-C即中断字符的话,可以用INT16H AH=00H
即
MOV AH,00H
INT 16H
调用完成后,AL中为输入的字符,AH中为扫描码,可以包含是否按了SHIFT、CTRL,ALT等,允许检测功能键,具体值可以编一程序逐一测试。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你是要32位的汇编程序代码么?
追问
是的~
在emu8086的exe模板
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询