【急急急】用汇编语言 从键盘输入10个字符,每个对应这个ASCII值,编程找出 ASCII值最大的存入MAX单元

作者&投稿:贸怀 (若有异议请与网页底部的电邮联系)
试编写一个汇编语言源程序,将键盘输入的ASCII码转换为二进制。~

;将键盘输入的ASCII码转换为二进制。
;直接回车程序结束。
;.com 文件格式
code segment
main proc far
assume cs:code,ds:code
org 100h

start:
PUSH CS
POP DS
NN1:
MOV AH,02
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H

mov ah,01
int 21h
cmp al,0dh
jnz goon
jmp endd
goon:
push ax
mov ah,09
lea dx,s1
int 21h
pop ax
call disp1
JMP NN1

endd:
INT 20H

S1 DB ' ASCII ========> ',24H

main endp
;--------------------------------
disp1 proc near
MOV BL,AL
mov cx,8
NEXT:
shl BL,1 ;逻辑左移
JC IS_1
MOV DL,30H
JMP XS1
IS_1:
MOV DL,31H
XS1:
MOV AH,02
INT 21H
LOOP NEXT
ret
disp1 endp
;--------------------------------
code ends
end start

以下是运行结果:
7 ASCII ========> 00110111
6 ASCII ========> 00110110
2 ASCII ========> 00110010
3 ASCII ========> 00110011
b ASCII ========> 01100010
s ASCII ========> 01110011
d ASCII ========> 01100100
h ASCII ========> 01101000
j ASCII ========> 01101010
x ASCII ========> 01111000
8 ASCII ========> 00111000
j ASCII ========> 01101010
f ASCII ========> 01100110
e ASCII ========> 01100101

; 下面的程序是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


补充回答:第二题,请另行提问。

assume cs:code,ds:data
data segment
MAX db 00h
data ends
code segment
start:mov ax,data
    mov  ds,ax
    mov cx,10
    mov bx,0 
l1: mov ah,1
    int 21h
    cmp  al,byte ptr [bx]
    jna l2 
    mov byte ptr [bx],al
l2:loop  l1    
    mov ax,004ch
    int 21h
code ends
end start

我没有试验,应该没问题



DATA SEGMENT
MAX DB 0H
STR DB 0ah,'The max ascll is:$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV CX,10
MOV BL,MAX
LOP: MOV AH,01H
INT 21H
CMP BL,AL
JNB LOP1
MOV BL,AL
LOP1: LOOP LOP
MOV MAX,BL
LEA DX,STR ;以下是显示最大的ascll的,若不要显示可将其去掉
MOV AH,09H
INT 21H
MOV AL,BL
MOV DL,AL
MOV CL,4
SHR DL,CL
CMP DL,9
JBE NEXT1
ADD DL,7
NEXT1: ADD DL,30H
MOV AH,2
INT 21H
MOV DL,BL
AND DL,0FH
CMP DL,9
JBE NEXT2
ADD DL,7
NEXT2: ADD DL,30H
MOV AH,2
INT 21H ;结束显示
MOV AH,4CH ;退出程序
INT 21H
CODE ENDS
END START

调试通过,可以运行!


汇编语言程序 帮忙做一下 急用
假设P0口的P0.0接1键,P0.1接2键,P0.2接3键,P1口接数码管的数据端口,P2口接数码管的使能,程序如下:ORG 0000H AJMP MAIN ORG 0030H MAIN:MOV P0,#0FFH;使P0口输入 MOV P1,#00H LOOP:MOV A,P0;取键值 CJNE A,#0FEH,LOOP1;判断1按键是否按下 MOV P1,#0F9H;数码管显示数字1...

急~~用汇编语言编写出从键盘输入10个字符然后相反的顺序将字符输出_百 ...
; 本程序通过编译,运行正确 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...

用汇编语言 ,将片外RAM的1000H单元开始的100字节的数据相加,结果存于...
100个单字节数之和两个字节足够存放了,该题可以用一个循环来实现。先将R7R6清零,之后逐步取出数据与低八位R6相加,进位与R7相加就可以了;代码如下:SUM:MOV DPTR,#1000H ;数据指针送DPTR MOV R2,#100 ;数据个数送R2 MOV R6,#0 MOV R7,#0 ;清零R6R7 LOOP:MOVX A,@DPTR ;...

急急急!!!求汇编语言高手解题?
1) 007F 2) FF80 3) FFFF 4) FFD2 5) 8000 6) 00FF

汇编语言 实现求平均数问题 急急急急急!!!
2013-01-03 汇编语言中求一组正数的和并求出平均值 10 2009-12-28 汇编语言计算平均数 急求。。跪求各位高人指点。。 1 2010-01-03 平均值程序问题(汇编或C语言)有急用!!! 4 2007-05-12 汇编语言问题,急急急急!!! 2009-04-24 汇编 求平均数 急 4 2008-11-15 汇编语句 急急急急急!

汇编语言编程实现下面问题:
END START程序的结果,要用DEBUG来观看。 做而论道 | 发布于2012-11-06 举报| 评论 4 0 为您推荐: 汇编语言指令大全 编程软件 汇编语言是 关于汇编语言程序 汇编语言编程方法 只会汇编语言 汇编语言基础编程 汇编语言 编程练习 汇编语言是一种 汇编语言可以实现 其他...

急急急!!!懂汇编语言的高手请进
DATA SEGMENT X DB ?Y DB ?DATA SEGMENT CODE SEGMENT ASSUME CS;CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AH,01H INT 21H CALL ASC_DEAL MOV X,DL ;将输入的字符转换成为数值存入X MOV AH,01H INT 21H CALL ASC_DEAL MOV Y,DL ;将输入的字符转换成为数值存入Y MOV AH,...

用汇编语言编写一个程序
print MACRO para ;定义一个宏,这样输出字符串的时候,可以省些事儿 lea dx,para mov ah,9 int 21h ENDM data segment msg1 db '请用拼音输入姓名学号[格式为:XinMing,XuHao$'buffer db 50,52 dup(0)' ;为什么是52?因为你可以输入50个,而系统要用1个字节,在后面放...

汇编语言问题,急急急!!!
LEA DX,RESULT ; 结果数据区首址 LEA SI,NAME1 ; 结果文件名 MOV CX,N+4 ; 结果字节数 CALL SAVE ; 保存结果到文件 RET START ENDP CODE ENDS END START 就是把首地址传参给dx,题中因为要把结果输出在output1.dat中,而结果被保存在result所指示的内存区域,所以把...

用汇编语言编下列两题,高分!急求!!
用汇编语言编下列两题,高分!急求!!  我来答 首页 在问 全部问题 娱乐休闲 游戏 旅游 教育培训 金融财经 医疗健康 科技 家电数码 政策法规 文化历史 时尚美容 情感心理 汽车 生活 职业 母婴 三农 互联网 生产制造 其他 用户 认证用户 视频作者 知道团队 认证团队 ...

高青县13399667703: 汇编语言,从键盘输入一字符串 -
潭临博卡: ;经运行,符合题目要求 code segment assume cs:code,ds:code org 100h start: push cs pop ds Q0:lea dx,Buffer mov ah,9 ;显示提示 int 21h mov si,200h ;硬编码缓冲区首址 mov byte ptr [si],0ffh ;置输入缓冲区大小为255个字符 mov dx,si ;定...

高青县13399667703: 从键盘输入一个字符串在下一行逆序输出用汇编语言如何实现 -
潭临博卡: 从键盘输入一个字符串在下一行逆序输出用汇编语言可用如下方法实现: ;汇编语言输入一串字符串,可以调用DOS功能中断INT 21H的06H功能. ;程序功能:输入一串字符,以回车符结束,输入字符串最大长度200字符; ; 输入结束在下一...

高青县13399667703: 汇编语言中怎样从键盘中任意输入一个数并存 -
潭临博卡: 这个程序能接受256个字符,如果你还想输入更多的字符,只需要把空间留的更多一点就行 data segment keyboard db 256 dup (?) ;为输入的字符串预留空间 data ends code segment assume cs:code,ds:data main proc far mov ax,data mov ...

高青县13399667703: 汇编语言:从键盘输入一个字符串,再从键盘输入一个字符,如果在原字符串中有这个字符就把它移到最后, -
潭临博卡: data segment parastr1 db 'one', '$'str2 db 'two', '$'str3 db 'three', '$'str4 db 'four', '$'str5 db 'five', '$'tab dw str1,str2,str3,str4,str5 data ends ssg segment stack dw 256 dup(?) ssg ends code segment para ...

高青县13399667703: 汇编语言:从键盘输入一行,第一个字符必须是空格,如不是退出程序,如是,则开始接受键入字符并顺序存放在首
潭临博卡: input a$ if mid$(a$,1,1)<>" " then end else a$=ltrim$(a$) end if ?a$ end 作用:从键盘输入一行,第一个字符必须是空格,如不是退出程序,如是,则去除空格,输出. 问题不完整,我只能尽力而为了.

高青县13399667703: [汇编语言]由键盘输入任意字符串 然后显示出来 -
潭临博卡: data segment keyboard db 256,?,256 dup (?) data ends code segment assume cs:code,ds:data main proc far mov ax,data mov ds,ax lea dx,keyboard mov ah,0ah;输入字符串 int 21h lea di,keyboard mov cl,[di+1];取出实际输入字符的个数 mov ...

高青县13399667703: 编写汇编语言程序段:从键盘输入一个字符串“please input a number”存入BUFF -
潭临博卡: code segmentassume cs:codeorg 100h start: jmp bbb data db 255 n db ? buff db 255 dup(?) bbb: push cspop dspush cspop eslea dx, datamov ah,10int 21h ; 从键盘输入字符串,字符串的字符个数在n中,串的开始地址为buff首地址...........mov ah,4chint 21h code endsend start

高青县13399667703: 写一个汇编语言程序,当键盘输入一个大写字母后显示它的下一个字母. -
潭临博卡: .MODEL SMALL.CODE.STARTUP MOV AH,1;从键盘读入1个字符 INT 21H INC AL;将输入字符的ASCII值加1,即变为它的后一个字符 CMP AL,05AH;将转换后的ASCII与'Z'比较 JA OVERFLOW;若加1后大于'Z',则跳转.做循环处理,输出'A' MOV DL,AL;将加1后的字符送输出缓冲 JMP OUTPUT OVERFLOW:MOV DL,041H;将'A'送输出缓冲 OUTPUT:MOV AL,2向屏幕输出DL中ASCII所表示的一个字符 INT 21H.EXIT END

高青县13399667703: 跪求:用汇编语言写 从键盘输入一个字符,找出 该字符的前导字符和后续字符,并显示这三个字符. -
潭临博卡: 程序还有点不足的是没有对输入进行判断(最好是输入B到y之间的)..完善的判断你可以自己琢磨..哈哈..data segment str1 db 'Please input your letter:' ,'$' str2 db 13,10,"The former letter is:",'$' str3 db 13,10,"The letter you'v inputed ...

高青县13399667703: 从键盘读入一字符串(长度小于32),并将其输出显示. -
潭临博卡: 同学我帮你完成了你的程序,编译通过,可 1、从键盘输入一个字符串(串长度小于100个字符),统计其串的长度后输出该串,需要说明的是最后输出的字符串长度是十六进制的,不过这个关系不大.呵呵 ;加点分哈~~~~~~~~~~~~~~~~~~~~...

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网