求汇编语言程序设计题解

求汇编语言程序设计题解,第1张

; 本程序通过编译,运行正确

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个后继字母。等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9580436.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存