程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 匯編-下面一段代碼的錯誤不明白,子程序的保護現場和恢復現場要怎麼寫?在哪寫?

匯編-下面一段代碼的錯誤不明白,子程序的保護現場和恢復現場要怎麼寫?在哪寫?

編輯:編程解疑
下面一段代碼的錯誤不明白,子程序的保護現場和恢復現場要怎麼寫?在哪寫?

DATAS SEGMENT
letter db 0
digit db 0
other db 0
str db 80,?,80 dup(?)
str2 db 'letter:$'
str3 db 'digit:$'
str4 db 'other:$'
DATAS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea dx,str
mov ah,0ah
int 21h
mov ch,0
mov cl,80
L1:mov ah,1
int 21h
cmp al,0dh
jz over
cmp al,'0'
jb others
cmp al,'9'
ja L2
jmp digits
L2:cmp al,'A'
jb others
cmp al,'Z'
ja L3
jmp letters
L3:cmp al,'a'
jb others
cmp al,'z'
ja others
jmp letters
letters:
inc letter
jmp over1
digits:
inc digit
jmp over1
others:
inc other
jmp over
over1:
loop L1
over:
call endline
lea dx,str2
mov ah,9
int 21h
sub ax,ax
mov al,letter
call display
call endline
lea dx,str3
mov ah,9
int 21h
sub ax,ax
mov al,digit
call display
call endline
lea dx,str4
mov ah,9
int 21h
sub ax,ax
mov al,other
call display
MOV AH,4CH
INT 21H
endline proc near
mov ah,2
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
ret
endline endp
display proc near
mov dl,al
add dl,30h
mov ah,2
int 21h
ret
display endp

CODES ENDS
END START
error A2085:instruction or register not accepted in current CPU mode.
(此代碼需要實現的功能是:鍵入一串字符,輸出字符中字母、數字、其他字符的個數。)
這個代碼是我各處摘抄的……一定有很多問題。
子程序有保護現場和恢復現場要在哪裡寫?按照上面寫的代碼需要保護的寄存器是ax麼?

最佳回答:


http://blog.sina.com.cn/s/blog_4a36e5020100jnid.html

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved