注册 登录
编程论坛 汇编论坛

想要追逐个显示39H,34H,41H,32H。加了一个显示子程序会显示一堆乱码,不知道如何让解决,请大佬指点

春风不度 发布于 2020-12-17 09:40, 4951 次点击
DATA SEGMENT
     ORG  0100H
     MEM DB 4 DUP(?)
DATA ENDS
CODE SEGMENT
   ASSUME CS:CODE,DS:DATA
MAIN PROC FAR
     MOV AX,DATA
     MOV DS,AX
     MOV AX,2A48H
     MOV CX,4
     MOV DI,3
  L1:PUSH CX
     MOV CL,4
     ROL AX,CL
     MOV BX,AX
     AND BX,0FH
     ADD BX,30H
     CMP BX,3AH
     JB L2
     ADD BX,7
 L2:MOV MEM[DI],BL
    DEC DI
    POP CX
    LOOP L1
    MOV AH,4CH
    INT 21H
MAIN ENDP
CODE ENDS
     END MAIN
1 回复
#2
Valenciax2020-12-19 06:15
代码有点问题.
写上 org 0100h(表示cs段和ds对齐,同段,编译为EXE后,须转为COM),不应该有data段,资料应该放CS段
若无特别理由,可删

资料是2A48,为什么要倒着放? 题目要求?
追逐(追逐还是逐,意义不明)个显示39H,34H,41H,32H(94A2,不是84A2吗?)

问问题最好附上完整题目,否则答不到点上.

回到楼主的问题.
显示字符方法很多,简单的是
MOV DL,字符 (的ASCII码,比如'A',即41H)
MOV AH,2
INT 21H

若要显示字串,可以用INT 21H,AH=9
LEA DX,字串地址 ;(DS要指向资料段,DX=字串地址,字串须以$作结尾,否则一堆乱码)
MOV AH,09H
INT 21H

[此贴子已经被作者于2020-12-19 06:16编辑过]

1