回 帖 发 新 帖 刷新版面

主题:用汇编语言编写:从键盘读入一个字符,输出其十六进制的ASCII码值

紧急求助:用汇编语言编写:从键盘读入一个字符,输出其十六进制的ASCII码值。求大虾帮助,感激涕零!

回复列表 (共10个回复)

沙发

.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 
为了便于你看懂,我用了比较详尽的注解

板凳


.if dx>'9'
  add dx,7
  .endif
有错误,请大虾更正。不胜感激

3 楼


.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 楼

我用的是MASM06.15编译的,没有错误呀

5 楼


我用的是未来汇编,运行不错结果阿
紧急求助:用汇编语言编写:从键盘读入一个字符输出其ASCII码的二进制的值,例如读入‘A’,输出01000001
求大虾帮助,感激涕零!

6 楼


我用的是未来汇编,运行不出结果阿

7 楼

.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 楼

不好意思,mov ah,4ch  int 21h 可以去了,用不着

9 楼


非常感谢你的帮助
[em2]

10 楼

大虾,请问:
result db 8 dup('0'),'$'
以及
mov ah,0
int 16h
是什么意思?
能否给出整个程序的注释
万分感激,加30分感谢。
 

我来回复

您尚未登录,请登录后再回复。点此登录或注册