組合語言作業

2023-01-02 02:33:06 字數 3000 閱讀 9468

1:試按下列要求在資料段中依次書寫各資料定義語句:

(1) 以da1為首位元組的連續儲存單元中存放20h個重複的資料序列:2,3,10個4,乙個7

da1 db 20h dup(2,3,10 dup(4),7)

(2)da2為字串變數,用字變數(dw)設定一字串:『students』(按此

順序存放在各單元中)

da2 dw 『st』 , 『ud』 , 『en』 , 『ts』

2、var db 2 dup ( 1 , 2 , 2 , dup ( 3 ) , 2 dup ( 1 ) )

在var 儲存區前5個單元的資料是多少?

1,2,3,3,3

3、執行下列程式段後,(ax)=?

array dw 10 dup (2)

xor ax ,ax

mov cx,length array

mov si,size array-type array

next:add ax,array[si]

sub si,type array

loop next

(ax)=20

4:現有如下程式段:

data segment

org 0020h

da1 dw 12h,23h

da2 db 11h,21h

da3 equ 1234h

da4 equ $-da2

da5 db 31h,32h

data ends

(1) 該程式段已占有的儲存位元組數是多少?

該程式段已占有的儲存位元組數是8個位元組。

(2) 符號名da4的值是多少?符號名da5的值是多少?

符號名da4的值為2,符號名da5的值是0026h。

5、設一程式段定義如下:

org 0024h

ar1 dw 4, 5, $+4

……mov ax , ar1+4

執行後ax=?

ax=0028h

6、程式的功能

begin: mov ah,1

int 21h

cmp al,』a』

jb stop

cmp al,』z』

ja stop

sub al,20h

mov dl,al

mov ah,2

int 21h

jmp begin

ret對鍵盤輸入的小寫字母用大寫字母顯示出來

7、寫乙個把字串中的所有大寫字母改為小寫字母.設字串以0 結尾.

code segment

assume cs:code,ds:code

; 功能:顯示指定位址(str_addr)的字串

; 入口:

; str_addr=字串位址(要求在資料段)

; 用法: output str_addr

; 用法舉例:output promptstr

output macro str_addr

lea dx,str_addr

mov ah,9

int 21h

endm

prompt_str db 'please input a string,press "0" termanite:$'

press_key db 13,10,13,10,'the complated. press any key to exit...$'

start: push cs

pop ds

push cs

pop es

output prompt_str ;提示輸入字串

lea di,buffer ;字串位址

cldinput_str: mov ah,1

int 21h

stosb ;儲存

cmp al,'0'

jz $+4 ;若字元為'0',結束輸入

jmp input_str ;輸入下乙個字元

mov ah,02h

mov dl,0dh

int 21h

mov dl,0ah

int 21h

lea si,buffer ;字串位址

up_down: lodsb

cmp al,'a'

jb $+8

cmp al,'z'

ja $+4

or al,20h ;轉換成小寫字母

mov dl,al

mov ah,2

int 21h

cmp al,'0'

jz exit_proc ;若字元為'0',結束程式

jmp up_down

exit_proc: output press_key ;提示操作完成,按任意鍵結束程式

mov ah,1

int 21h

mov ah,4ch ;結束程式

int 21h

buffer:

code ends

end start ;編譯到此結束

8.編一程式在以buf為首址的位元組單元中存放了100個無符號數,找出其中最大數送max單元。

buf db 5,6,7,58h,62,45h,127,……

count equ $-buf; count 等於變數 buf 位元組數

max db?..

.mov bx, offset buf

mov cx,count-1

moval, [bx]

lop1:inc bx

cmp al, [bx]

jae next

moval, [bx]

next:dec cx

jnz lop1

mov max,al.

組合語言 第3章巨集組合語言

第三章巨集組合語言 一 巨集組合語言格式 3.1.1 指令語句格式 指令語句的一般格式如下 標號 指令助記符運算元 注釋 1 標號 標號是機器指令語句存放位址的符號表示,代表該指令目標 的第乙個位元組位址,後面必須緊跟冒號 2 指令助記符 指令助記符為語句的核心成分,表示了該語句的操作型別。3 運算...

組合語言總結

一 乙個完整的源程式的結構 乙個源程式一般由若干個段組成,每個分段可以是棧段 資料段和 段。乙個源程式可以有多個棧段 資料段和 段,從語法規則上來看,棧段是有明顯標誌的 段最好的型別為 code 的標記,並用cs作為段界暫存器,只有資料段不要求標誌。完整的源程式的結構一般形式如下 程式名稱 二 源程...

組合語言總結

組合語言學習體會 大一大二期間學寫了一些高階語言,如c語言和c 在對一些實際問題的程式設計處理上使用這些高階語言顯得很是方便。於是在剛接觸這門課的時候就對其實用性產生了懷疑和一些的牴觸情緒。再學習了一段時間後,雖然對一些繁雜的指令有些討厭 但還是硬著頭皮學著下來了 但後來再經過實驗課的學習感覺組合語...