- [zhuleilei_2010] 对程序修改如下,编译通过。 DATASG SEGMENT MESS1 10/22 16:59
- [shjnba] call letterc 这个调用子程序 jmp letterc 这个是转到这个标号 是不 08/25 20:12
- [pascale] 晕,中间的注释没加“;” 注释成代码了。太粗心了 01/02 20:44
- [pascale] 谢谢!大家。 12/19 22:32
- [游客] 我是个内心怕困难的人,(我很想改变)就这样这道题成了一个拦路虎,我不敢再看这道题。 ====== 12/18 22:00
- [jcw2008] 祝贺! 12/18 18:35
- [pascale] 5937000/17800的十六为是14d 两个字节可以放下的呀。 12/09 13:21
- [pascale] 我刚debug的一下 并无溢出。我把图片发一下。 12/09 13:09
- [pascale] 好我看看。 12/09 12:56
- [crazyman] 在第一次div word ptr [di+756] 的时候好像就出异常了。博主debug一下把。 12/08 15:45
- [liuyisu2008] 你好 12/04 13:19
- [acool] 没什么。大家在这里本来有应该相互帮助、相互讨论嘛^_^ 一起加油吧~ 11/27 17:29
[2010-01-02 11:22] 求助 关于实验11 的错误。
datasg segment
db "Beginner's All-purpose Symbolic Instruction Code.", 0
datasg ends
codesg segment
begin: mov ax, datasg
mov ds, ax
mov si, 0
call letterc
mov ax, 4c00h
int 21h
letterc: cmp BYTE ptr[si], 0 //判断是否到结尾
je over
cmp BYTE ptr[si], 'a'
jb back
cmp BYTE ptr[si], 'z'
ja back
and BYTE ptr[si], 11011111b
back: inc si
jmp letterc
over: ret
codesg ends
end begin
编译后的
[ pascale 发表于 2010-01-02 20:44 ]
晕,中间的注释没加“;” 注释成代码了。太粗心了
[ shjnba 发表于 2010-08-25 20:12 ]
call letterc 这个调用子程序
jmp letterc 这个是转到这个标号
是不是要分清楚啊!
[ zhuleilei_2010 发表于 2010-10-22 16:59 ]
对程序修改如下,编译通过。
DATASG SEGMENT
MESS1 DB "BEGINNER'S ALL-PURPOSE SYMBOLIC INSTRUCTION CODE.",0
DATASG ENDS
STACKSG SEGMENT
MESS2 DB 100 DUP(?)
STACKSG ENDS
CODESG SEGMENT
ASSUME CS:CODESG,DS:DATASG,SS:STACKSG
MAIN PROC FAR
BEGIN: MOV AX, DATASG
MOV DS, AX
MOV SI, 0
CALL LETTERC
MOV AX, 4C00H
INT 21H
RET
MAIN ENDP
;
LETTERC PROC NEAR
CMP BYTE PTR MESS1[SI], "0"
JE OVER
CMP BYTE PTR[SI], 'a'
JB BACK
CMP BYTE PTR[SI], 'z'
JA BACK
AND BYTE PTR[SI], 11011111B
BACK: INC SI
JMP LETTERC
OVER: RET
LETTERC ENDP
CODESG ENDS
END BEGIN
请楼主在使用汇编语言编程时一定要使用正确的汇编格式!!!
另外,call指令后出现的是子程序的入口地址,所以一定要在程序段中定义一个子程序!