第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 下列指令不...