1.編寫統計ax中1、0個數的源程式。1的個數存入ch,0的個數存入cl。
code segment
assume cs:code
start: mov cx, 0
mov dx,17
aa1: sub dx, 1
jz aa3
shl ax, 1
jnc aa2
inc ch
jmp aa1
aa2: inc cl
jmp aa1
aa3: mov ah,4ch
int 21h
code ends
end start
2.編寫比較兩個字串string1和string2所含字元是否完全相同的源程式,若相同則顯示「match」,若不相同則顯示「no match」。
程式:data segment
r1 db 'match',0ah,0dh
r2 db 'no match',0ah,0dh
string1 db '***xx'
n1 equ $-string1
string2 db 'yyyyy'
n2 equ $-string2
data ends
code segment
assume cs:code,ds:data
start: mov ax,data
mov ds,ax
mov ax,n1
cmp ax,n2
jnz aa1
add ax,1
lea si,string1
lea di,string2
aa2: mov bl,[si]
mov bh,[di]
inc si
inc di
sub ax,1
jz aa3
cmp bl,bh
jz aa2
jmp aa1
aa3: lea bx,r1
mov cx,7
aa4: mov dl,[bx]
inc bx
mov ah,2
int 21h
loop aa4
jmp e
aa1: lea bx,r2
mov cx,10
aa5: mov dl,[bx]
inc bx
mov ah,2
int 21h
loop aa5
e: mov ah,4ch
int 21h
code ends
end start
3.從鍵盤讀入乙個四位的十六進製制數,crt顯示等值的二進位制數.
由於每個十六進製制數字對應4個二進位制,所以每讀入乙個十六進製制位後,即可將其對應的4個二進位制位依次輸出。由於數字『0』~ 『9』的ascⅱ碼為30h~39h,字母『a』~『f』與 『a』~『f』的ascⅱ碼為61h~66h 與41h~46h ,因此,如果輸入的字母為數字『0』~『9』,則其低4位即為對應的二進位制位;如果輸入的字元為字母『a』~『f』或『a』~『f』,則需要減7,然後通過移位將低4位依次輸出。
匯程式設計序如下:
data segment
msg1 db 'hex:', '$'
msg2 db 0dh, 0ah, 'binary:', '$'
count equ 4
buf db 4 dup(?)
data ends
code segment
assume cs:code,ds:data
start: mov ax, data
mov ds, ax
lea dx, msg1
mov ah, 9
int 21h
mov cx, count
mov si, 0
input通過四次迴圈從鍵盤讀入四位十六進製制數
mov ah, 1
int 21h
mov buf[si], al
dec cx
inc si
cmp cx, 0
jnz input
next3: lea dx, msg2
mov ah, 9
int 21h
mov cx, count
mov si, 0
next2: mov bl, buf[si]
cmp bl , '9'
jbe ok ; 讀入的字元<=9 轉向 ok:
sub bl, 7 ;讀入字元》= 9 減7
ok: push cx
mov cl ,4
shl bl, cl ; 邏輯左移4位,低4位à高4位
mov cx, 4 ; 4次迴圈將當前處理字元的4位二進位制輸出
next1: mov dl, '0'
shl bl, 1
jnc skip
inc dl
skip: mov ah, 2
int 21h
loop next1
pop cx ;
inc si
loop next2 ; 4次迴圈將4位十六進製制數,每位轉換為對應的4位二進位制
exit: mov ah, 4ch
int 21h
code ends
end start
4.設從string開始存放乙個以$為結束標誌的字串,試編寫把字串中的字元進行分類的源程式,數字字元送入num開始的記憶體中,大寫字母送入bchar開始的記憶體區中,小寫字母存入lchar開始的記憶體中,其他字元存入other開始的記憶體區中。
data segment
string db 'abc123abc','$'
n equ $-string
num db n dup(?)
bchar db n dup(?)
lchar db n dup(?)
other db n dup(?)
data ends
code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
lea bx,string
dec bx
lea sp,bchar
lea cx,lchar
lea dx,other
lea si,num
aa1:inc bx
mov al,[bx判斷是否為$,是否結束
cmp al,』$』
jz aa5
cmp al,30h判定數字字元
jc aa4
cmp al,39h
ja aa2
mov [si],al
inc si
jmp aa1
aa2:cmp al,41h判定大寫字母
jc aa4
cmp al,5ah
ja aa3
mov di,sp
mov [di],al
inc sp
jmp aa1
aa3:cmp al,61h判定小寫字母
jc aa4
cmp al,7ah
ja aa4
mov di,cx
mov [di],al
inc cx
jmp aa1
aa4:mov di,dx判定其他
mov [di],al
inc dx
jmp aa1
aa5:mov ah,4ch返回dos 結束
int 21h
code ends
end start
5.試編寫找出首位址為buf資料塊中的最小偶數(該資料塊中有100個帶符號位元組數),並以十六進製制的形式顯示在crt上的源程式。
答:data segment
bufdb 100 dup要比較的數
data ends
code segment
assume cs:code,ds:data
start:
movax,data
movds,ax
leabx,bufbuf首位址送bx
movcl,101迴圈控制
movdl,126dl存放最小偶數
movah,0標誌是不是有偶數
loop1:
deccl迴圈計數減1
jztoendzf標誌0則跳轉
moval,[bxbx記憶體內容送al
incbxbx指向下一記憶體單元
8086組合語言程式格式答案
一 單項選擇題 1 c 2 d 3 a 4 b 5 c 6 d 7 d 8 c 9 a 10 b 11 b 12 d 13 b 14 c 15 a 16 c 17 b 18 b 19 a 20 a 二 多項選擇題 1 ab 2 abd 3 abc 4 cd 5 ab 6 abc 7 ac 8 ad ...
組合語言 第3章巨集組合語言
第三章巨集組合語言 一 巨集組合語言格式 3.1.1 指令語句格式 指令語句的一般格式如下 標號 指令助記符運算元 注釋 1 標號 標號是機器指令語句存放位址的符號表示,代表該指令目標 的第乙個位元組位址,後面必須緊跟冒號 2 指令助記符 指令助記符為語句的核心成分,表示了該語句的操作型別。3 運算...
組合語言總結
一 乙個完整的源程式的結構 乙個源程式一般由若干個段組成,每個分段可以是棧段 資料段和 段。乙個源程式可以有多個棧段 資料段和 段,從語法規則上來看,棧段是有明顯標誌的 段最好的型別為 code 的標記,並用cs作為段界暫存器,只有資料段不要求標誌。完整的源程式的結構一般形式如下 程式名稱 二 源程...