組合語言問題來到大師面前,組合語言要求答案

發布 科技 2024-02-20
14個回答
  1. 匿名使用者2024-01-25

    1.如果資料段未結束,請新增 dseg ends2宣告資料時,db後面應該有空格,你不是自由的。

    3.第十三次應該是測試,而不是文字

    更正如下:dseg 段

    strn db 'abcdefghijklmnopquvw','$'

    n db ?

    dseg ends

    cseg segment

    assume cs: cseg, ds: dsegstart: mov ax, dseg

    mov ds, ax

    lea si, strn

    mov dl,0

    again: mov al,[si]

    cmp al,'$'

    je done

    test al,0ffh

    jpe next

    or al,80h

    mov [si],al

    inc dl

    next: inc si

    jmp again

    done: mov n,dl

    mov ah,4ch

    int 21h

    cseg ends

    end start

  2. 匿名使用者2024-01-24

    這有點不對勁。

    data segment

    da1 dw 1234h,5678h,3456h,0a53h ;開口數。

    count equ ($da1)/2

    pfg db count dup (0) ;儲存平方根。

    data ends

    stack1 segment para stackdw 20h dup (0)

    stack1 ends

    code segment

    assume cs: code,ds:data,ss:stack1being: mov ax , data

    mov ds , ax

    mov cx , count

    lea si , da1

    lea di , pfg

    lop: mov ax , si] ;取要開啟的方格數。

    push cx ;儲存資訊。

    call sqr_proc ;呼叫子例程。

    mov [di] ,cl ;儲存平方根。

    pop cx ;恢復資訊。

    add si , 2 ;修改指標。

    inc di

    loop lop

    mov ah , 4ch

    int 21h

    sqr_proc proc ;開啟平方根子例程。

    xor cl ,cl

    mov dx ,1

    sqr: sub ax , dx

    jb exit

    inc cl

    add dx , 2

    jmp sqr

    exit: ret

    sqr_proc endp

    code ends

    end being

  3. 匿名使用者2024-01-23

    操作步驟如下: <>

    經過測試,程式的功能可以滿足問題的要求。

  4. 匿名使用者2024-01-22

    20000h單元的內容為20 h,20006h單元的內容為33 h,SI的內容為000c h,MOV SI後,執行偏移B2。

    第三個空白應填寫為 000c。

    關鍵是這句話:b1 db'3ac5$ 空'

    注意? 這裡面有乙個“空間”。

    樓上的兩人都低估了“空間”。

  5. 匿名使用者2024-01-21

    首先,標題本身有一點錯誤。

    B2 dB B1 錯誤,應更改為 B2 DW B1。

    由於 b1 用於資料定義的運算元,因此它表示其 16 位偏移位址,不能在 db 定義的 8 位變數中使用。

    分析資料段中的資料儲存情況

    實體地址資料。

    20000h 20h ;W1 的第乙個站點是 3220001h 20h

    20002h ffh ;W2位址,每個位址佔兩個位元組20003h ffh

    20004h 41h

    20005h 00h

    20006h 33h ;B1,第乙個是“3”

    20007h 41h ;這是“乙個”

    20008h 43h ;這是“c”

    20009h 35h ;這是“5”

    2000ah 24h ;它是'$'

    2000bh 06h ;B2 的第乙個位址儲存在 B1 的偏移位址 0006h

    2000ch 00h

    儲存資料後,很容易找到答案。

    1.20000h單位的內容是十進位數32,即20h2單元20006h的內容為33h

    3.偏移量 B2 是 B2 000BH 的偏移位址

  6. 匿名使用者2024-01-20

    m1 db 32,20h

    m2 dw -1,41h

    b1 db '3ac5$'

    b2 db b1

    標籤的實際含義是線段的偏移位址,其中m1=0000h,m2=0002h,b1=0006h,b2=000bh

    載入標籤有兩個常用值:MOV 命令模式需要偏移量來修改標籤,而 LEA 命令模式不需要偏移量修改。

    資料段開頭的位址是20000h,表示段偏移位址從0000h開始的單位,即M1處的單位內容為十進位數32,即十六進製表示為20h,20006h表示0006h,即B1處的單位內容, 這是 3 的 ASCII 程式碼,十六進製是 33h

    mov si,offset b2 相當於 lea si,b2; si=b2=000bh

    這是乙個基本問題。

  7. 匿名使用者2024-01-19

    不保證是對的。

    3 ax bx cx dx

    4 4200h

    5 訂單。 結構 分支結構 環狀結構。

    7 d8 a

    9 c10 d

    11 a12 b

    13 將組合語言源程式翻譯成目標程式。

    14 即時定址 暫存器定址 直接定址暫存器 間接定址暫存器 相對定址 基址加變數定址 相對基址加變數定址。

    15 資料傳輸 算術運算 邏輯運算 序列運算 程式控制 處理器控制 16 用於告訴彙編者如何組裝的指令。

    17 1.分析問題並抽象出描述問題的資料模型 2.確定問題的演算法思路 3.繪製流程圖或結構圖 4.分配記憶體和工作單元(暫存器) 5.逐個編寫程式 6.在計算機上進行靜態檢查和除錯。

    18 初始化部分 環體部分 調整部分 控制部分 19 in al, 21h

    mov dx,1200h

    out dx,al

    20 mov ax,12h

    mov bx,34h

    mov cl,8

    shl ax,cl

    or ax,bx

    21 codes segment

    assume cs:codes

    start:

    mov bx,1010101010101010bmov cx,4

    s1:mov bp,4

    xchg cx,bp

    rol bx,cl

    xchg cx,bp

    mov ax,bx

    and ax,0fh

    cmp ax,10

    jb s2add ax,7

    s2:add ax,30h

    mov dx,ax

    mov ah,2

    int 21h

    loop s1

    mov ah,4ch

    int 21h

    codes ends

    end start

  8. 匿名使用者2024-01-18

    if (interrupt enable) - 位 9,中斷許可權標誌。 控制處理器對可遮蔽硬體中斷請求的響應。 設定 1 可啟用可遮蔽硬體中斷響應,設定 0 可關閉可遮蔽硬體中斷響應。

    執行 int8 後,if 標誌從“允許中斷 (EI)”更改為“禁止中斷”(DI),即從“1”變為“0”。 因此,x2xx 變為 x0xx。

    CPL、IOPL 和控制暫存器 CR4 中的 VME 標誌確定 CLI、STI、POPF、POPFD 和 IRET 指令是否可以修改 IF 標誌。

    希望它有所幫助。

  9. 匿名使用者2024-01-17

    標誌的 0200h 位 IF 是中斷允許標誌,0 表示禁止響應硬體中斷,1 表示允許硬體中斷。

    執行CLI命令後,if=0; 執行 STI 後,if=1

    當中斷器結束時,它包含 popf 並恢復之前的標誌

  10. 匿名使用者2024-01-16

    在 16 位組合語言中,實體地址 = 段位址 * 16(即十六進製為 10h,即二進位中左移 4 位,或卦中左移 1 位)+ 偏移位址,構成乙個 20 位位址(因為 8086CPU 有一條 20 位位址線)。 所以這個問題的PA=DS*16+1352H=10000+1352=11352H(通常表示為1000:1352)。

    指令 mov ax [1352h] 是將儲存在位址 1000:1352h(預設段位址為 DS)的資料傳送到暫存器 ax(未計算,此處位址為 1000; 1352h 處的值應為 26ffh),其中 AH 為 8 位高,Al 為 8 位低。

    希望它有所幫助。

  11. 匿名使用者2024-01-15

    ob4h對應的二進位為10110100,第一位為符號位,即1。

    如果是無符號的,則為10110100,如果轉換為十進位,則為180,如果有符號,則為-0110100,如果轉換為十進位,則為-76。

    11h對應的二進位是10001,完成8位是00010001,第乙個數字是符號位,是0。

    如果認為是無符號的,則為00010001,如果轉換為十進位,則為17,如果視為有符號,則為+0010001,轉換為十進位的17。

    可以看出,由於第乙個位置是0,所以不管是有符號還是無符號都是一樣的。

    如果第乙個數字是1,則有符號時為負數,無符號時為整數,結果不同。

  12. 匿名使用者2024-01-14

    有符號數字,由補語表示。

    房東去看了補品的相關知識,沒有這樣的問題。 參考。

  13. 匿名使用者2024-01-13

    0b4h=1|011,0100b

    011h=0|001,0001b

    注意:“|“Before is the sign bit”是乙個四位分隔符。

    我看不懂了,輔導原始碼,補碼的知識。

  14. 匿名使用者2024-01-12

    mov si,0024h ;si=24h

    mov bx, si ;bx=24h

    mov si,[si] ;si=6f72h

    or si,0ffh ;si=6fffh

    and si,[bx] ;si=6f72h

    執行上述程式片段後,(si)=6f72h,(cf)=0,of=0;

相關回答
18個回答2024-02-20

我也有 0 個基本程式設計。

從王爽老師的《組合語言》一書開始,通俗易懂,如果不是這本書,也許我早就放棄學習程式設計了,學完這個看了譚浩強的《C語言程式設計》,只看前幾章,以win32彙編為基礎,Windows下的彙編和C很像, 再學習羅雲斌的《Windows環境下的32位組合語言程式設計》,學完這本書就上手了。 >>>More

6個回答2024-02-20

檢視 IBM PC Assembly Language Programming(第 5 版)。

9個回答2024-02-20

mov dx,3 是初始化 dx,注意 dx 中的二進位是 0000 0000 0000 0011,稍後會用到。 >>>More

6個回答2024-02-20

選擇 D。 注意優先順序較低,AND的優先順序高於OR和XOR的優先順序00000110(6)。 >>>More

5個回答2024-02-20

它是根據數位電路中的邏輯運算計算得出的。