
; 本程序通过编译,运行正确
Code Segment
Assume CS:Code,DS:Code
; -----------------------------------------
; 功能:显示指定地址(Str_Addr)的字符串
; 入口:
; Str_Addr=字符串地址(要求在数据段)
; 用法: Output Str_Addr
; 用法举例:Output PromptStr
Output MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:输出一个字符
; 入口:dl=要显示的字符
Enter_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
Enter_Chr endp
; -----------------------------------------
; 功能:取光标位置
; 入口:无
; 出口:DH=行号,DL=列号
GetCursor Proc Near
PUSH AX
PUSH BX
PUSH CX
XOR BX,BX
MOV AH,3
INT 10H
MOV Cursor_Row,DH
MOV Cursor_Col,DL
POP CX
POP BX
POP AX
RET
Cursor_Row DB
Cursor_Col DB
GetCursor EndP
; -----------------------------------------
; 功能:置光标位置
; 入口:Cursor_Row=行坐标; Cursor_Col: 列坐标)
SetCursor Proc Near
PUSH CX
PUSH BX
PUSH AX
MOV DH,Cursor_Row
MOV DL,Cursor_Col
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
RET
SetCursor EndP
; -----------------------------------------
; 功能:输出回车换行
enter_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
enter_CTLF endp
; -----------------------------------------
; 功能:将AL中的低4位二进制数转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AL=转换后的ASCII码
AL_ASCII Proc Near
cmp al,10 ;AL<10
jb @@To_ASCII ;AL<10,按数字处理
add al,7 ;AL>=10,按大写字母处理
@@To_ASCII: add al,'0' ;转换成相应的数字或大写字母
ret
AL_ASCII EndP
; -----------------------------------------
; 功能:将AL中的字节数转换成十六进制显示的ASCII码
; 入口:AL
; 出口:AX=转换后的ASCII码
Byte_ASCII Proc Near
mov cx,4
xor ah,ah ;将AH置0
shl ax,cl ;将AX左移4位
shr al,cl ;将AL右移4位
xchg ah,al
call AL_ASCII ;调用子程序,将AL中的值转换成相应的ASCII码
xchg ah,al
call AL_ASCII
xchg ah,al
ret
Byte_ASCII EndP
; -----------------------------------------
Prompt_Chr db 'Please input a charactor: $'
Start: push cs
pop ds
push cs
pop es ;使数据段、附加段与代码段同段
Input_Char: Output Prompt_Chr ;提示输入一个字符
call GetCursor ;取光标位置
add Cursor_Col,6 ;光标列值加6
mov ah,1
int 21h
push ax
call Byte_ASCII ;将AL中的字节数转换成十六进制显示的ASCII码
call SetCursor ;设置光标位置
mov dl,al
call Enter_Chr ;显示一个字符
mov dl,ah
call Enter_Chr ;显示一个字符
call enter_CTLF ;输出一个回车、换行
pop ax
cmp al,1bh ;是Esc
jnz Input_Char ;不是,接收下一个字符
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
对于一般用户而言,位于键盘左上方的esc键并不常用,但你知道吗?其实借助esc键还能实现不少快捷 *** 作哦!
1上网时,如果点错了某个网址,直接按esc键即可停止打开当前网页。
2上网时总免不了要填写一些用户名什么的,如果填错了,按esc键即可清除所有的框内内容;而打字时,如果打错了也可以按esc键来清除错误的选字框。
3除了"ctrl+alt+del”组合键可以调出windows任务管理器外,按下"ctrl+shift+esc“组合键一样能启动任务管理器,并且可以直接进入任务管理器的”进程“项。
4当某个程序不处于活动状态而我们又想将其恢复为活动状态时,按“alt+esc”键即可激活该应用程序,而不必用鼠标点击程序标题栏。
5对于存在“取消”选项的d出窗口而言,如果你要选择取消的话,直接按esc键即可实现“取消” *** 作。
6"ctrl+esc"也可以打开开始菜单
补充:esc键
称为逃逸键。
>
; 本程序通过编译,运行正确。
Code Segment
Assume CS:Code,DS:Code
KBEsc equ 1BH
PromptStr DB 'Please input a letter(Esc to exit): $'
Start: push cs
pop ds ;使数据段与代码段同段
Begin: lea dx,PromptStr
mov ah,9
int 21h
mov ah,1
int 21h
cmp al,KBEsc
jz Exit_Proc
mov cx,5
mov dl,al
mov ah,2
Disp_Chr: inc dl
int 21h
loop Disp_Chr
mov dl,13
int 21h
mov dl,10
int 21h
jmp Begin
Exit_Proc: mov ah,4ch ;结束程序
int 21h
Code ENDS
END Start ;编译到此结束
;输入不超过65535的10进制数,将其以16位的形式显示
code segment
assume cs:code
org 100h
start:
jmp bbb
x dw 0
msg1 db 10,13,'please input a number:','$'
msg2 db 10,13,' ','$'bbb:
push cs
pop ds
lea dx,msg1
mov ah,9
int 21h
lea bx,x
mov ax,0
push ax
again1:
mov ah,1
int 21h
cmp al,13
je line0
sub al,30h
mov ah,0
mov si,ax
pop ax
mov cl,10
mov ch,0
mul cx
add ax,si
push ax
jmp again1
line0:
pop ax
mov word ptr[x],ax
lea di,msg2
inc di
inc di
mov cx,4
again2:
mov ax,word ptr[x]
rol ax,1
rol ax,1
rol ax,1
rol ax,1
; rol ax,4
mov word ptr[x],ax
and ax,000Fh
cmp al,9
jg line1
add al,30h
mov byte ptr[di],al
jmp line2
line1:
add al,37h
mov byte ptr[di],al
line2:
inc di
loop again2
lea dx,msg2
mov ah,9
int 21h
mov ah,8
int 21h mov ah,4ch
int 21h
code ends
end start
以上就是关于求汇编语言程序设计题解全部的内容,包括:求汇编语言程序设计题解、键盘上的Esc有什么作用、用汇编语言编写:从键盘输入一个字母,然后程序使得屏幕再出现该字母之后的5个后继字母。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)