DATAS SEGMENT
w dw 0
keybuf db 255
db 0
db 255 dup(0) ;定義鍵盤輸入需要的緩沖區
DATAS ENDS
STACKS SEGMENT
db 200 dup(?)
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
mov dx,offset keybuf ;用0a號功能,輸入一個字符串
mov ah,0ah ;用回車結束
int 21h
mov dl,0ah ;再進行換行,以便在下一行顯示轉換后的字符串
mov ah,2
int 21h
; push ax
; push dx
; mov dl,cl
; mov ah,02
; int 21h
; pop dx
; pop ax
mov bx,offset keybuf+1 ;取出字符串的字符個數,作為循環的次數
mov cl,[bx]
mov ch,0
mov ax,0
again:
inc bx
mov ax,[w]
push bx
mov bx,16
mul bx
pop bx ;是小寫字母,則轉換為大寫字母
mov [w],ax
mov dl,[bx] ;取出一個字符,
cmp dl,'9'
jbe lab1
cmp dl,'F'
jbe lab2
sub dl,32
lab2: sub dl ,07h
lab1: sub dl,30h
add [w],dx
loop again
mov ax,[w]
mov bx,-1
push bx
mov bx,10
lab3 :mov dx,0
div bx
push dx
cmp ax,0
jnz lab3
lab5: pop dx
cmp dx,-1
jz lab4
add dl,30h
mov ah,02
int 21h
jmp lab5 ;循環,處理完整個字符串
lab4: MOV AH,4CH
INT 21H
CODES ENDS
END START
標簽:
匯編
上傳時間:
2015-04-02
上傳用戶:wcc0310
判斷奇偶數的匯編程序CODE SEGMENT
ASSUME CS: CODE
START: MOV AH, 01H ; 調用 DOS中斷的1號子功能(鍵入一個字符),
INT 21H ; AL←鍵入一位數字
CMP AL, 30H ; 若輸入比‘0’小的字符則重新輸入
JB START
CMP AL, 39H ; 若輸入比‘9’大的字符則重新輸入
JA START
CLC ; CF標志清0
SHR AL, 1 ; AL最低位移入CF
JNC EVN ; 根據CF的狀態,判斷輸入數字的奇偶性
MOV BL, 31H ; 奇數,BL←1的ASCII碼
JMP DISP
EVN: MOV BL, 30H ; 偶數,BL←0的ASCII碼
DISP: MOV AH, 02H ; 調用DOS中斷的2號子功能,輸出字符
MOV DL, 0AH ; 輸出換行
INT 21H
MOV DL, 0DH ; 輸出回車
INT 21H
MOV DL, BL ; 輸出標志字符
INT 21H
mov ah, 1
int 21h
MOV AH, 4CH ; 返回DOS
INT 21H
CODE ENDS
END START
標簽:
上傳時間:
2015-06-10
上傳用戶:zhuangxj618