一个简单的汇编程序调不通

来源:百度知道 编辑:UC知道 时间:2024/05/17 04:46:13
DATA SEGMENT
CHAR DB 14H DUP(0)
DATA ENDS

STACK1 SEGMENT PARA STACK
DW 20H DUP(0)
STACK1 ENDS

COSEG SEGMENT
ASSUME CS:COSEG,DS:DATA,SS:STACK1
START:
MOV AX,DATA
MOV DS,AX
MOV AH,01H
INT 21H
CMP AL,'1'
JA P1
JMP P2
PRINT: MOV CX,14H
MOV DX,OFFSET CHAR
LOP: MOV DL,[DX]
MOV AH,2
INT 21H
INC DX
LOOP LOP
MOV AH,4CH
INT 21H
P1:MOV CHAR,'0'
MOV CHAR+1,'A'
MOV CHAR+2,'1'
MOV CHAR+3,'B'
MOV CHAR+4,'2'
MOV CHAR+5,'C'
MOV CHAR+6,'3'
MOV CHAR+7,'D'
MOV CHAR+8,'4'
MOV CHAR+9,'E'
MOV CHAR+10,'5'
MOV CHAR+11,'F'
MOV CHAR+12,'6'
MOV CHAR+13,'G'
MOV CHAR+14,'7'

LOP: MOV DL,[DX]
这里的DX改成BX,还有用到DX都改成BX:
PRINT:
MOV CX,14H
MOV BX,OFFSET CHAR
LOP:
MOV DL,[BX]
MOV AH,02H
INT 21H
INC BX

呵呵,我也在学汇编。我编译运行过了,可以的。给你提点建议:代码要规范点写,这样比较好看。

当前data段默认通过BX寄存器间接寻址