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

汇编高手请进

mrcsjie 发布于 2008-10-04 21:30, 1988 次点击
DATA SEGMENT
A DB 12H
B DB 22H
D1 DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,A
ADD AL,B
MOV D1,AL
XS1:AND AL,0F0H
    MOV CL,04
    ROR AL,CL
    ADD AL,30H
    MOV DL,AL
    MOV AH,02
    INT 21H
XS2:MOV AL,D1
    AND AL,0FH
    ADD AL,30H
MOV DL,AL
    MOV AH,02
    INT 21H
    MOV AH,4CH
    INT 21H
CODE ENDS
END START



以上程序求12H+22H没有问题,但是求1234H+9876H 就出现错误,请问各们应该如何修改呀(在原有的基础上),可以的话把可以运行的源程序PO上来,不胜感激,急用啊!!!!
13 回复
#2
ONEPROBLEM2008-10-04 22:46
当然会出错了~~
因为你的程序处理的是字节嘛,而现在要处理的数据是字.所以,把它改成能处理字的功能就可以了.
#3
mrcsjie2008-10-08 13:45
关键是要怎么改啊
#4
zklhp2008-10-09 12:33
[bo][un]mrcsjie[/un] 在 2008-10-8 13:45 的发言:[/bo]

关键是要怎么改啊


比如说在寄存器的使用方面 不能用 al 了

转化成可输出字符时 要搞个循环吧

偶也就说这些了 呵呵

写的话自己动手吧
#5
ONEPROBLEM2008-10-10 15:24
ASSUME CS:CODE,DS:DATA
DATA SEGMENT
A  DW 1234H
B  DW 9876H
D1 DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,A
ADD AX,B
MOV D1,AX
MOV  AL,AH
CALL XS1
MOV  AX,D1
MOV  AL,AH
CALL XS2
MOV  AX,D1
CALL XS1
MOV  AX,D1
CALL XS2
    MOV AX,4C00H
    INT 21H
XS1:AND AL,0F0H
    MOV CL,04
    ROR AL,CL
    ADD AL,30H
    MOV DL,AL
    MOV AH,02
    INT 21H
    RET
XS2:AND AL,0FH
    ADD AL,30H
    MOV DL,AL
    MOV AH,02
    INT 21H
    RET
CODE ENDS
END START
#6
zklhp2008-10-10 15:30
[bo][un]ONEPROBLEM[/un] 在 2008-10-10 15:24 的发言:[/bo]

ASSUME CS:CODE,DS:DATA
DATA SEGMENT
A  DW 1234H
B  DW 9876H
D1 DW ?
DATA ENDS
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
MOV AX,A
ADD AX,B
MOV D1,AX
MOV  AL,AH
CALL XS1
MOV  AX,D1
MOV   ...


真负责呀
#7
ONEPROBLEM2008-10-10 18:34
[bo][un]zklhp[/un] 在 2008-10-10 15:30 的发言:[/bo]



真负责呀

没办法,初学的朋友往往更加需要帮助~~想当年偶@$%$$#$%%$^^&%
#8
zklhp2008-10-10 18:56
[bo][un]ONEPROBLEM[/un] 在 2008-10-10 18:34 的发言:[/bo]


没办法,初学的朋友往往更加需要帮助~~想当年偶@$%$$#$%%$^^&%


偶没编译器不敢给别人写 怕写错了 呵呵
#9
mrcsjie2008-10-15 16:16
回复 5# ONEPROBLEM 的帖子
怎么结果是::::
应该是AAAA吧
#10
ONEPROBLEM2008-10-15 17:29
[bo][un]mrcsjie[/un] 在 2008-10-15 16:16 的发言:[/bo]

怎么结果是::::
应该是AAAA吧

你查一下ASCII码吧:
30H + 0AH = 3AH (它就是" : ")
而A字母的十六进制值是41H ~~
#11
mrcsjie2008-10-15 18:17
回复 10# ONEPROBLEM 的帖子
那你给的那个程序要怎么改才可以显示AAAA呢?本人在这方面真的菜鸟!见笑了
#12
mrcsjie2008-10-15 18:21
回复 10# ONEPROBLEM 的帖子
那你给的那个程序应该怎么改才可以显示AAAA呢?谢过
#13
ONEPROBLEM2008-10-15 18:27
把第28行和第34行的30H改成37H,就可以了~~
#14
维天2008-10-18 06:39
榜样!送花…
1