610.asm

来自「汇编语言的简单的输入字母的大小写转换的小汇编语言程序」· 汇编 代码 · 共 79 行

ASM
79
字号


DSEG SEGMENT
   VAL1 DW 000FH
DSEG ENDS
CSEG SEGMENT
BANDO PROC FAR
   ASSUME CS:CSEG,DS:DSEG
START:PUSH DS
      SUB AX,AX
      PUSH AX
      MOV AX,DSEG
      MOV DS,AX
      PUSH VAL1         ;将val1压栈
      CALL PAIRS        ;调用PAIRS

      RET
BANDO ENDP
PAIRS PROC NEAR
      PUSH BP        
      MOV BP,SP
      PUSH BX
      MOV BX,[BP+4]     ;(BX)=VAL1 
      CALL OUTBIN       ;调用子程序OUTBIN
      MOV CX,8          ;输出8个空格
SPACE:MOV DL,' '
      MOV AH,2
      INT 21H
      LOOP SPACE
      CALL OUTOCT       ;调用子程序OUTOCT
      CALL CRLF         ;调用CRLF
      POP BX
      POP BP
      RET 2
PAIRS ENDP
OUTBIN PROC NEAR
      PUSH BX           
      MOV CX,16             
ONEBIT:ROL BX,1          
      MOV DX,BX
      AND DX,1          ;从第15位开始逐个取得VAL1的二进制位
      OR DX,30H         ;将二进制位变成ASCII
      MOV AH,2
      INT 21H           ;并输出
      LOOP ONEBIT       ;循环16次
      POP BX
      RET
OUTBIN ENDP
OUTOCT PROC NEAR
      MOV CX,5          ;
      ROL BX,1
      MOV DX,BX
      AND DX,01
      OR DX,30H
      MOV AH,2
      INT 21H
NEXT: PUSH CX
      MOV CL,3
      ROL BX,CL
      MOV DX,BX
      AND DX,7
      OR DX,30H
      MOV AH,2
      INT 21H
      POP CX
      LOOP NEXT
      RET
OUTOCT ENDP
CRLF PROC NEAR
      MOV AH,2
      MOV DL,0DH
      INT 21H
      MOV DL,0AH
      INT 21H
      RET
CRLF ENDP
CSEG ENDS
   END START

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?