主题:用汇编语言编写:从键盘读入一个字符,输出其十六进制的ASCII码值
等待啊等待
[专家分:0] 发布于 2006-12-24 18:15:00
紧急求助:用汇编语言编写:从键盘读入一个字符,输出其十六进制的ASCII码值。求大虾帮助,感激涕零!
回复列表 (共10个回复)
沙发
klainogn [专家分:270] 发布于 2006-12-24 19:27:00
.model small ;指定运行模式为small
.code ;定义代码段
.startup ;指定开始位置
mov ah,7 ;DOS 7号功能调用,无回显输入一个字符
int 21h
and ax,00ffh ;AX高位清零
mov cx,0
L:xor dx,dx ;DX清零
cmp ax,10h ;与十六相比较,小于十六转入H
jl H
mov bx,10h
div bx
push dx ;存余数
inc cx ;计算存入栈的数据个数
jmp L
H:push ax ;保存最后的余数
inc cx
T:pop dx ;弹了堆栈中的数据
or dx,30h ;加30H转为ASCII码
.if dx>'9'
add dx,7
.endif
mov ah,2 ;DOS 2号功能,显示中的内容
int 21h
loop T
.exit ;退出程序
end
为了便于你看懂,我用了比较详尽的注解
板凳
等待啊等待 [专家分:0] 发布于 2006-12-25 00:54:00
.if dx>'9'
add dx,7
.endif
有错误,请大虾更正。不胜感激
3 楼
等待啊等待 [专家分:0] 发布于 2006-12-25 00:55:00
.MODEL small
.STACK 64h
.DATA
XYZ DB '0','1','2','3','4','5','6','7'
DB '8','9','A','B','C','D','E','F' ;定义一个换码表
.CODE
MAIN PROC FAR
MOV AX,@DATA
MOV DS,AX
MOV AH,07H ;无显字符输入
INT 21H
MOV AH,AL
AND AX,0F00FH ;分离高四位数和低四位数,取操作数AX中的所有位
MOV CL,4
SHR AH,CL
PUSH AX
MOV BX,OFFSET XYZ
MOV AL,AH
XLAT XYZ
MOV AH,02
MOV DL,AL
INT 21H
POP AX
MOV BX,OFFSET XYZ
XLAT XYZ
MOV AH,02
MOV DL,AL
INT 21H
MOV AH,4CH
INT 21H
MAIN ENDP
END MAIN
4 楼
klainogn [专家分:270] 发布于 2006-12-25 10:34:00
我用的是MASM06.15编译的,没有错误呀
5 楼
等待啊等待 [专家分:0] 发布于 2006-12-25 11:41:00
我用的是未来汇编,运行不错结果阿
紧急求助:用汇编语言编写:从键盘读入一个字符输出其ASCII码的二进制的值,例如读入‘A’,输出01000001
求大虾帮助,感激涕零!
6 楼
等待啊等待 [专家分:0] 发布于 2006-12-25 11:41:00
我用的是未来汇编,运行不出结果阿
7 楼
klainogn [专家分:270] 发布于 2006-12-26 15:05:00
.model small
.data
string db 'Please input a char:$'
crlf db 0dh,0ah,'The result is: '
result db 8 dup('0'),'$'
.code
.startup
mov ax,@data
mov ds,ax
mov ah,9
lea dx,string
int 21h
lea si,result
mov ah,1
int 21h
mov cx,8
l0: shl al,1
jnc l1
inc byte ptr [si]
l1: inc si
loop l0
mov ah,9
lea dx,crlf
int 21h
mov ah,0
int 16h
mov ah,4ch
int 21h
.exit
end
8 楼
klainogn [专家分:270] 发布于 2006-12-26 15:07:00
不好意思,mov ah,4ch int 21h 可以去了,用不着
9 楼
等待啊等待 [专家分:0] 发布于 2006-12-28 16:37:00
非常感谢你的帮助
[em2]
10 楼
等待啊等待 [专家分:0] 发布于 2006-12-28 20:35:00
大虾,请问:
result db 8 dup('0'),'$'
以及
mov ah,0
int 16h
是什么意思?
能否给出整个程序的注释
万分感激,加30分感谢。
我来回复