王爽 組合語言 第十章檢測題分析

2021-04-30 23:52:01 字數 3966 閱讀 8002

第10章彙編測試題目

下列哪條指令不能夠使cs:ip指向當前記憶體段範圍內以s為標號的**段______。(4)

1、  jmp near ptr s

2、  jmp far ptr s

3、  call near ptr s

4、  call word ptr s

下面指令執行後,ax中的數值為多少____(2)

記憶體位址 機器碼                   彙編指令

1000:0 b8 00 00              mov ax,0

1000:3 9a 09 00 00 10   call far ptr s

1000:8 40                       inc ax

1000:9 58                      s:pop ax

add ax,ax

pop bx

add ax,bx

1、  1006h

2、  1010h

3、  0020h

4、  000ch

分析:程式執行到call far ptr s後,先把cs也壓入堆疊中,然後把將ip=8壓入堆疊中

pop ax 後,ax = 堆疊中的ip,即ax=8

pop bx 後,bx = cs =1000h

故:ax = 8+8 +1000h = 1010h

補全程式,實現從記憶體1000:0處開始執行指令。(3)

assume cs:code

stack segment

db 16 dup(0)

stack ends

code segment

start: mov ax,stack

mov ss,ax

mov sp,16

mov ax,____

push ax

mov ax,____

push ax

retf

code ends

end start

1、  cs,ip

2、  0,1000h

3、  1000h,0

4、  0,1000

分析:主要是考核retf和堆疊的後進先出。

執行retf,相當於執行:pop ip   pop cx

故,壓棧時,先壓入cx,再壓入 ip

下面的程式執行後,ax中的數值為多少____(4)

記憶體位址 機器碼     彙編指令

1000:0 b8 00 00   mov ax,0

1000:3 e8 01 00   call s

1000:6 40         inc ax

1000:7 58         s:pop ax

1、  3

2、  1

3、  4

4、  6

分析:當執行到call s時,ip位址為6

然後去執行call s操作,將6壓入堆疊

到標號s處,將ax彈出 ax = 6

對下列程式說法正確的是_____。(4)

assume cs:codesg

stack segment

dw 10 dup (0)

stack ends

codesg segment

mov ax,4c00h

int 21h

start: mov ax,stack

mov ss,ax

mov sp,20

mov ax,0

push cs

push ax

mov bx,0

retf

codesg ends

end start

1、  程式中start之後的彙編指令不能得到執行。

2、  程式載入後stack段在記憶體中實際占用的記憶體空間是20b。

3、  程式的每一條指令都能獲得執行,但不能正常返回。

4、  指令retf可替換為ret,並能夠正常返回。

分析:1.end start 指明了程式從start處開始執行,所有,start之後的彙編指令能夠得到執行

2.因為段的大小必須是16的倍數,所以,實際占用的記憶體空間是32b

3.程式能夠正確返回

4.正確,因為本程式中棧內的cs並未被改變 所以執行後ip =0 cs=cs依然可以返回

某程式中定義了如下資料: 

data segment 

db "hello" 

db 'world' 

db "!" 

db 'w','elcome' 

db "to","masm!" 

db "bye",'b','ye!' 

dw 0,1,2,3,4,5,6,7,8,9,0ah,0bh,0ch,0dh,0eh,0fh 

dd 16 dup (0) 

data ends 

下列說法正確的是______。(3)

1、 該程式載入後其中的字元資料和數字資料在記憶體中都是以ascii碼的形式存放的。 

2、 該程式載入後這組資料在記憶體中所占用實際空間是90hb。 

3、 該資料段定義可放在該程式中end偽指令之前的任何位置。 

4、 在編譯階段,該程式因如此定義資料而報錯。

分析:1.該程式載入後其中的字元資料和數字資料在記憶體中都是以二進位制形式存放的。 

2.在該程式中,db定義的資料長度為32b ,dw定義的資料長度為32b ,dd定義的資料64b 一共為80hb

3.正確

4.不會報錯

下面的程式執行後,ax中的數值是多少____11

記憶體位址 機器碼      彙編指令 

1000:0 b8 00 00  mov ax,6 

1000:2 ff d0        call ax 

1000:5 40           inc ax 

1000:6                mov bp,sp 

add ax,[bp]  

分析:mov ax,6       ;ax = 6

call ax        ;push 5, ip=6

inc ax         ;

mov bp,sp      ;bp = sp

add ax,[bp]    ;ax = 6 ss:[sp] = 5

所以,ax= 6+5 = 11

下面的程式執行完add ax,5時,ax中的數值為多少____8

assume cs:code

stack segment

dw 8 dup(0)

stack ends

code segment

start: mov ax,stack

mov ss,ax

mov sp,16

mov ds,ax

mov ax,0                         ;ds和ss指向stack sp=16 ax=0

call word ptr ds:[0eh]     ; s的偏移位址被壓入棧底,同時程式跳轉到s

s:      add ax,2                         ;ax=2

inc ax                             ;ax=3

add ax,5                        ;ax=8

mov ax,4c00h

int 21h

code ends

end start

王爽組合語言筆記 第十章檢測點10 5 2

問題 下面的 執行後,ax和bx中的數值為多少?assume cs code data segment dw 8 dup 0 data ends code segment start mov ax,data mov ss,ax mov sp,16 mov word ptr ss 0 offset s...

王爽彙編第十章檢測點10 5分析 (整理)

1.先看源程式 assume cs code stack segment dw 8 dup 0 stack ends code segment start mov ax,stack mov ss,ax mov sp,16 mov ds,ax mov ax,0 call word ptr ds 0eh...

王爽 組合語言 第七章檢測題分析

第7章彙編測試題目 共3道單選題目 1 生成exe之後用debug載入後,檢視暫存器內容如下 ds 0b2d es 0b2d ss 0b3d cs 0b3e ip 0000 程式的起始位址的段位址是 3 1 0b3e 2 0b2d 3 0b3d 4 0 但為什麼cs是0b3呢?不清楚。2 下列指令不...