(1)從buf單元開始存有一字串(長度<255),程式設計實現統計該字串中的ascii在42h~45h之間的字元個數,並將統計結果以二進位制形式顯示在螢幕。
.486
data segment use16
buf db 'abcd'
count equ $-buf
data ends
code segment use16
assume cs:code,ds:data
beg:
mov ax,data
mov ds,ax
mov bl,0 ;計數
mov si,0
mov cx,count
aga:
cmp buf[si],42h
jb last ;低於轉移
cmp buf[si],45h
ja last ;高於轉移
inc bl
last:
inc si
loop aga
mov cx,8
m2:
test bl,80h
jnz m3
mov dl,'0'
mov ah,02h
int 21h
jmp m4
m3:
mov dl,'1'
mov ah,02h
int 21h
m4:
shl bl,1
loop m2
mov ah,4ch
int 21h
code ends
end beg
(2)使用者登入驗證程式的實現
程式執行後,給出提示操作,請使用者鍵入使用者名稱和密碼;使用者在鍵入密碼時,程式不回顯鍵入字元;只有當使用者鍵入的使用者名稱,密碼字串和程式內定的字串相同時,顯示歡迎介面並返回dos;否則給出提示資訊,使用者名稱或密碼錯誤,再次輸入。介面顏色自定(彩色或黑白)
.486data segment use16
_name db
name
- 1, '1511','$'
_password db
password
- 1, '
1212
', '$'
buf_name db 30db?
db 30 dup(?)
buf_password db 30db?
db 30 dup(?)
mesg1 db
'please inpute your name: ', '$'
mesg2 db
'please inpute your password: ', '$'
ok db 0dh, 0ah, '---- wellcome ---- ', 0dh, 0ah, '$'
no db 0dh, 0ah, 'username or password error!', 0dh, 0ah, '$'
data ends
code segment use16
assume cs:code, ds:data
beg: mov ax, data
mov ds, ax
mov ss, ax
mov sp, 0
;get name
again: mov ah, 9
mov dx, offset mesg1
int 21h
mov ah, 0ah
mov dx, offset buf_name
int 21h
mov bl, buf_name+1
mov bh, 0
inc byte ptr buf_name+1
mov si, offset buf_name + 2
mov byte ptr [bx+si], '$'
; line break
mov ah, 02h
mov dl, 0ah
int 21h
;get password
mov ah, 9
mov dx, offset mesg2
int 21h
mov di, 0
mov bx, offset buf_password + 2
s: mov ah,08h
int 21h
mov byte ptr [bx + di], al
inc di
cmp al, 0dh
jnz s
mov ax, di
mov byte ptr buf_password + 1, al
mov byte ptr [bx +di], '$'
call check
cmp ax, 0
jz again
mov ah, 4ch
int 21h
check proc
mov si, offset _name
mov di, offset buf_name + 1
mov cx, [si]
mov ch, 00h
s0: mov al, [si]
cmp al, [di]
jnz error
inc si
inc di
loop s0
mov si, offset _password
mov di, offset buf_password + 1
mov cx, [si]
mov ch, 00h
s1: mov al, [si]
cmp al, [di]
jnz error
inc si
inc di
loop s1
mov ah, 9
mov dx, offset ok
int 21h
mov ax, 1
jmp over
error: mov ah, 9
mov dx, offset no
int 21h
mov ax, 0
over: ret
check endp
code ends
end beg
彙編實驗(二)
test 和 and 區別在於不改變op1 shr 如果要多移幾次 mov cl,4 shr dl,cl 判斷陣列裡正負數 並分開存放 assume cs code,ds data data segment m db 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17...
彙編實驗二
1 使用e命令修改0021 0 0021 f資料,及修改後檢視是否正確寫入的操作 可以看出是正確的。2 使用a命令輸入指令 3 執行命令 將結果填在書上 2.1 使用a命令輸入指令,使用e命令修改2000 0 2000 f的值,及修改後檢視的部分 2 單步除錯每一行彙編指令 第一行 給ax賦值 第三...
彙編實驗二
實驗結論 1 在使用 a 命令輸入指令除錯前,使用 e 命令將記憶體單元0021 0 0021 7連續 8個位元組資料修改為30h,31h,32h,33h,34h,35h,36h,37h 輸入指令 一條一條執行 書上的填空內容為ax 3130 ax 6465 bx 3534 bx 6c6a sp 0...