试编写一个汇编语言程序,要求从键盘接收一个四位的16进制数,并在终端上显示与它等值的二进制数。

 我来答
wangfan2000
推荐于2018-03-02 · TA获得超过2549个赞
知道小有建树答主
回答量:586
采纳率:50%
帮助的人:561万
展开全部
code segment
assume cs:code

start: mov bx,0
mov ch,4

mov cl,4

s0: mov ah,1 ;键盘输入4个16进制数

int 21h

cmp al,39h ;判断是0~9还是A~H,若是数字减30H,否则还要减07H

jbe next

sub al,07h

next: sub al,30h
shl bx,cl
add bl,al ;转换后的数据存入BX,每存一次左移4位
dec ch

jnz s0 ;输入完则控制显示

mov cx,16

s1: mov dl,0

rol bx,1 ;循环左移1位,最高位移入CF

adc dl,30h ;加30H后可得该位的ASCII码.

mov ah,02h

int 21h

loop s1

mov ax,4c00h

int 21h

code ends
end start

说明:编译连接后,运行后直接输入4个16进制数后回车即可.
人才不1234
2012-12-24 · TA获得超过100个赞
知道答主
回答量:112
采纳率:0%
帮助的人:120万
展开全部
输入之后回车!

ASSUME CS:CODE,DS:DATA,SS:STACK
DATA SEGMENT
TEMP DB 4 DUP(0)
MSG1 DB 10,13,'PLEASE INPUT A HEX NUMBER ',10,13 ,'$'
MSG2 DB 10,13,'THE BINARY NUM IS ',10,13,'$'
ERR DB 10,13,"THE NUM YOU INPUT ISN'T HEX",10,13,'$'
H16 DW 16
DATA ENDS
STACK SEGMENT
DB 128 DUP (0)
TOS DB '$'
STACK ENDS
CODE SEGMENT
CHANGE PROC
MOV CX,0
L:
SHR AX,1
JC P1
MOV BX,30H
PUSH BX
JMP CONT
P1:
MOV BX,31H
PUSH BX
CONT:
INC CX
CMP AX,0
JNE L
O:
POP DX
MOV AH,2
INT 21H
LOOP O
R:
RET
CHANGE ENDP
ERROR PROC
MOV DX,OFFSET ERR
MOV AH,9
INT 21H
RET
ERROR ENDP
P09 PROC
PUSH AX
MOV AX,BX
POP BX
AND BX,000FH
MUL H16
ADD AX,BX
MOV BX,AX
RET
P09 ENDP
Paf2 PROC
PUSH AX
MOV AX,BX
POP BX
AND BX,00FFH
MUL H16
SUB BL,37H
MOV BH,0
ADD AX,BX
MOV BX,AX
RET
Paf2 ENDP
Paf1 PROC
PUSH AX
MOV AX,BX
POP BX
AND BX,00FFH
MUL H16
SUB BL,87
MOV BH,0
ADD AX,BX
MOV BX,AX
RET
Paf1 ENDP
START:
MOV AX,DATA
MOV DS,AX
MOV AX,STACK
MOV SS,AX
MOV SP,OFFSET TOS
MOV DX,OFFSET MSG1
MOV AH,9
INT 21H
MOV BX,0
L1:
MOV AH,1
INT 21H
CMP Al,13
JE NEXT
CMP AL,'0'
JB ERRO
CMP AL,'9'
JNG P
CMP AL,'A'
JB ERRO
CMP AL,'F'
JNG PAF
CMP AL,'a'
JB ERRO
CMP AL,'f'
JNG Pa
ERRO:
CALL ERROR
JMP EXIT
Pa :
CALL Paf1
JMP L1
PAF:
CALL PAF2
JMP L1
P :
CALL P09
JMP L1
NEXT:
MOV DX,OFFSET MSG2
MOV AH,9
INT 21H
MOV AX,BX
CALL CHANGE
EXIT:
MOV AX,4C00H
INT 21H
CODE ENDS
END START
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chapter_ele
2011-12-13
知道答主
回答量:46
采纳率:0%
帮助的人:17.1万
展开全部
BEGIN: MOV BX, 0 ;用于存放四位的16进制数
MOV CH, 4
MOV CL, 4
INPUT: SHL BX, CL ;将前面输入的数左移4位
MOV AH, 1 ;从键盘取数
INT 21H
CMP AL, 30H ;<0吗?
JB INPUT ;不是‘0~F’的数重新输入
CMP AL, 39H ;是‘0~9’吗?
JA AF ;不是,转‘A~F’的处理
AND AL, 0FH ;转换为:0000B~1001B
JMP BINARY
AF: AND AL, 1101 1111B ;转换为大写字母
CMP AL, 41H ;又<A吗?
JB INPUT ;不是‘A~F’的数重新输入
CMP AL, 46H ;>F吗?
JA INPUT ;不是‘A~F’的数重新输入
AND AL, 0FH ;转换为:1010B~1111B
ADD AL, 9
BINARY: OR BL, AL ;将键盘输入的数进行组合
DEL CH
JNZ INPUT
DISPN: MOV CX, 16 ;将16位二进制数一位位地转换成ASCII码显示
DISP: MOV DL, 0
ROL BX, 1
RCL DL, 1
OR DL, 30H
MOV AH, 2 ;进行显示
INT 21H
LOOP DISP
STOP: RET
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
鹰的飞翔sunjun
2018-04-26 · TA获得超过2.5万个赞
知道小有建树答主
回答量:38
采纳率:91%
帮助的人:1.4万
展开全部

试编写一段程序,要求对键盘输入的小写字母用大写字母显示出来。

  1. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。

  2. 编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。

  3. 从键盘上输入一串字符,将其中的小写英文字母变换为大写英文字母,其他字符保持不变。然后将变换后的字符串显示出来。

  4. 试编写一段程序,要求比较两个字符串string1和string2所含字符是否相等,如相等示“MATCH”, 若不相同则显示“NO MATCH”。

  5. 试编写一段程序,要求在长度为100H字节的数组中,找出大于61H的无符号数的个数并存入字节单元UP中,找出小于2FH的无符号数的个数并存入字节单元DOWN中。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
cc3000c
2012-12-24 · TA获得超过685个赞
知道小有建树答主
回答量:484
采纳率:25%
帮助的人:484万
展开全部
用C写、写完后,在VC里面进入调试模式、然后查看反汇编代码、就可以看到对应的汇编代码了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式