回 帖 发 新 帖 刷新版面

主题:汇编语言显示的问题

编写了一个很简单的汇编程序,用来在屏幕上显示1到10,可是编译连接后为什么屏幕回一直出现乱码,请求高手帮忙,在这里先谢谢了程序如下:


DATA SEGMENT
BUF DW 1,2,3,4,5,6,7,8,9,10
DATA  ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
       MOV DS,AX
       
       MOV AL,10
       MOV SI,OFFSET BUF
   P1: MOV BX,[SI]
       CALL DISPLAY
       ADD SI,2
       DEC AL
       JNZ P1
      
DISPLAY PROC NEAR                ;显示子程序
      MOV CH,4
      MOV CL,4
DISP0:ROL BX,CL
      MOV DL,BL
      AND DL,0FH
      CMP DL,9
      JA DISP1
      ADD DL,30H
      JMP DISP2
DISP1:ADD DL,37H
DISP2:MOV AH,02H
      INT 21H
      DEC CH
      JNZ DISP0
      RET
DISPLAY ENDP

       MOV AH,4CH
       INT 21H
       CODE ENDS
       END START



     









回复列表 (共4个回复)

沙发


DATA SEGMENT
BUF DW 1,2,3,4,5,6,7,8,9,10
DATA  ENDS

CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
       MOV DS,AX
       
       MOV    DI, 10    ;因为 AX 在 DISPLAY 中会发生改变
       XOR    SI, SI
   P1:
       MOV BX, [SI + BUF]
       CALL DISPLAY
       ADD SI, 2
       DEC DI
       JNZ P1

       MOV AH,4CH
       INT 21H
DISPLAY PROC NEAR                ;显示子程序
      MOV CH,4
      MOV CL,4
DISP0:ROL BX,CL
      MOV DL,BL
      AND DL,0FH
      CMP DL,9
      JA DISP1
      ADD DL,30H
      JMP DISP2
DISP1:ADD DL,37H
DISP2:MOV AH,02H
      INT 21H
      DEC CH
      JNZ DISP0
      RET
DISPLAY ENDP
       CODE ENDS
       END START

板凳

谢谢erping了

3 楼

这个好像不完善啊

4 楼

我想请问erping 为什么ax 在display 子程序会改变?

我来回复

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