1.設資料段array單元開始有50個有符號數的位元組數,要求統計其中負數的個數,並存入到資料段中的result變數中。寫出實現該功能的匯程式設計序
data segment
array db 1,2,3,4,-
1……result db 0
;統計負數的個數
data ends
code segment
assume: cs: code, ds:data
start:
mov ax, data
mov ds, ax
lea si, array ;取首位偏移位址
mov cx,
50 ;迴圈次數
haha: mov al,
[si]
;取出第乙個數送al
inc si ;指向下乙個位置
test al,
80h ;測試符號位
jz next ;非負,跳轉
inc result ;否則,result加1
next: loop haha
code ends
end start
2.若data1與data2都是記憶體單元的位址,編寫一段程式實現將data1單元開始的100個數傳送到data2開始的儲存區內的功能。
lea si , data1
lea bx , data2
mov cx ,
100next: mov al,
[si]
;取出data1中的數到al
mov [bx]
, al ;將al中的值傳到data2中
inc si
inc bx
loop next
hlt
3.編寫程式,將以block單元開始的100個儲存單元清0。要有段說明和必要的偽指令。
data segment
block db 100
dup(?)
data ends
code segment
assume cs:code, ds:data
start: mov ax, data
mov ds, ax
lea bx, block
mov cx,
100next: mov byte ptr[bx]
,0 ;清0
inc bx ;指向下乙個位置
loop next
code ends
end start
4.編寫乙個組合語言程式,要求對鍵盤輸入的小寫字母用大寫字母顯示出來
start: mov ah,
1 int 21h
cmp al, 『a』
jb stop
cmp al, 『z』
ja stop
sub al,
20hmov dl, al
mov ah,
2int 21h
jmp start
stop: ret
微機匯程式設計序
又是自學的一學期,呵呵。學到最後也就知道零星半點指令吧,複雜的程式可能還是不怎麼會寫,熟練當然也不敵c了,但是彙編之於嵌入式,往上走肯定少不了遇到,學好還是必要的!此次僅作入門吧。今日所學,明日之用。1 統計正負零的個數 datas segment array db 1,2,1,0,2,0,2,4,...
微機原理 反彙編例項01 02
例項2 secret01.exe 第乙個字元的ascii碼減一等於58,故該字元的ascii碼是59,該字元是y 第二個字元的ascii碼加一等於50,故該字元的ascii碼是4f,該字元是o 第三個字元的ascii碼加一等於56,故該字元的ascii碼是55,該字元是u。截圖如下 例項3 secr...
微機原理 反彙編例項5
例項6 secret5.exe 將di中儲存的字元 y 賦值給al,再加一 得到z 與07 二進位制是00000111 做與運算,與30 二進位制是00110000 做或運算。解密過程如下 z 7a,二進位制是01111010 跟07做與運算的結果是00000010 02 將該結果跟30做或運算,結...