freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

匯編語言程序設計(錢曉捷)課后答案-文庫吧

2025-03-25 02:35 本頁面


【正文】 。 jo overflow mov dx,offset okmsg jmp next overflow: mov dx,errmsg next: mov ah,9 int 21h 錯誤: mov ax,X sub ax,Y jo overflow mov dx,offset okmsg okmsg db ‘OK’, ‘$’ mov dx,errmsg 。錯誤1:數(shù)據(jù)定義在代碼中 mov ah,9 int 21h overflow: errmsg db ‘Error ! Overflow !’, ‘$’ mov dx,errmsg 。 錯誤2:缺少JMP指令 mov ah,9 int 21h 。 。.model small.stack.dataarray db 255db 0array1 db 255 dup(39。$39。)array2 db 0dh,0ah,39。$39。 .code.startupmov ah,0ah 。 鍵盤輸入字符串mov dx,offset arrayint 21hmov dx,offset array2 。 回車換行mov ah,09hint 21hmov bx,offset array1again: mov al,[bx]cmp al,39。$39。jz donecmp al,39。a39。 。 小于a和大于z的字符不是小寫字母jb nextcmp al,39。z39。ja nextsub al,20h 。 在a和z之間的字符才是小寫字母,轉(zhuǎn)換為大寫mov [bx],al 。 保存到原位置next: inc bxjmp againdone: mov dx,offset array1mov ah,09hint 21h.exit 0end第三章(01) 。 硬指令:每個硬指令就是一個處理器指令,在CPU執(zhí)行時產(chǎn)生相應功能; 偽指令:偽指令并不產(chǎn)生處理器指令,它通常用于輔助匯編程序?qū)υ闯绦蜻M行匯編。 ⒈編輯文本編輯程序 ⒉匯編匯編程序 ⒊連接連接程序 ⒋調(diào)試調(diào)試程序應用程序。 ;簡化段定義格式 .model small ;定義程序的存儲模式(小模式) .stack;定義堆棧段(默認1024個字節(jié)) .data;定義數(shù)據(jù)段 str1 ab ’Input Number:0~9 : ’,0dh,0ah,’$’str2 ab ’Error!’,0dh,0ah,’$’ .cade;定義代碼段 .startup;說明程序的起始點,建立ds,ss的內(nèi)容。 mov ah,09h;顯示str1字符串 mov dx,offset str1 int 21h gtekey: mov ah,1;調(diào)用BIOS判斷按鍵功能 int 16h jz getkey;如 zf = 0,無鍵按下,等待 cmp al,‘0’;有鍵按下,鍵值與‘0’比較 jb error;如 ‘0’,出錯處理 cmp al, ‘9 ’;有鍵按下,鍵值與 ‘9’比較 ja error;如 〉‘9’,出錯處理 mov ah,02h;調(diào)用DOS顯示字符功能,顯示該數(shù)字 mov dl,al int 21h .exit 0;終止程序執(zhí)行,返回DOS error: mov ah,09h; 出錯,調(diào)用DOS 功能顯示str2字符串 mov dx,offset str2 int 21h jmp getkey;等待按鍵 end; 匯編結(jié)束。 。stack segment dw 512 dup(?) stack endsdata segmentarray db 255db 0array1 db 255 dup(39。$39。)array2 db 0dh,0ah,39。$39。 data endscode segment 39。code39。assume cs:code, ds:data, ss:stackstart: mov ax,data mov ds,ax mov ah,0ah 。 鍵盤輸入字符串mov dx,offset arrayint 21hmov dx,offset array2 。 回車換行mov ah,09hint 21hmov bx,offset array1again: mov al,[bx]cmp al,39。$39。jz donecmp al,39。a39。 。 小于a和大于z的字符不是小寫字母jb nextcmp al,39。z39。ja nextsub al,20h 。 在a和z之間的字符才是小寫字母,轉(zhuǎn)換為大寫mov [bx],al 。 保存到原位置next: inc bxjmp againdone: mov dx,offset array1mov ah,09hint 21hmov ax,4c00hint 21hcode endsend start。 (1) mov byte ptr [bx],1000;1000超出了一個字節(jié)范圍 (2) mov bx,offset myword[si];寄存器的值只有程序執(zhí)行時才能確定, ;而offset是匯編過程計算偏移地址,故無法確定 ;可以改為lea bx,myword[si] (3) cmp mybyte1,mybyte2;兩個都是存儲單元,指令不允許 (4) mov al,mybyte1+mybyte2 ;變量值只有執(zhí)行時才確定,匯編過程不能計算 (5) sub al,myword;字節(jié)量AL與字量myword,類型不匹配 (6) jnz myword;Jcc指令只有相對尋址方式,不支持間接尋址方式。 前者為“與”操作硬指令助記符,可匯編成機器代碼。 后者為邏輯運算符,在匯編時進行“與”運算,產(chǎn)生具體數(shù)值。 注:對于邏輯運算,有關(guān)操作數(shù)可化為二進制數(shù)。 (1)mov al,23h AND 45h OR 67h; 67h (2)mov ax,1234h/16 + 1Oh; 133h (3)mov ax,NOT(65535 XOR 1234h); 1234h (4)mov al, LOW 1234h OR HIGH 5678h; 76h (5)mov ax,23h SHL 4; 0234h (6)mov ax, 1234h SHR 6; 0048h (7)mov al,’a’ AND (NOT(’a’’A’)) ; 41h (8)mov al,’H’ OR 00100000b; 68h (9)mov ax,(76543 LT 32768) XOR 7654h; 7654h。 假設block開始的數(shù)據(jù)塊有32個字節(jié)數(shù)據(jù):16個正數(shù)+100 (64h),16個負數(shù) 48 (0doh) 分別連續(xù)分布: block db 16 dup(100),16 dup(48) ;也可以是任意字節(jié)數(shù)據(jù),隨意分布。 dplus db 32 dup(?);為正數(shù)預留存儲空間 dminus db 32 dup(?);為負數(shù)預留存儲空間 count equ 32;字節(jié)數(shù)。 mydataseg segment my1b db ‘Personal Computer’ my2b db 20 my3b db 14h 。20h my4b db 00010100b my5w dw 20 dup(?) my6c equ 100 。my6c = 100 my7c equ Personal Computer mydataseg ends。 段地址:表示標號所在代碼段的段地址; 偏移地址:表示標號所在代碼段的段內(nèi)偏移地址; 類型:引用該標號時,表示它所在同一個段――near類型,還是另外一個段――far類型。 mydata segment ORG lO0h VARW DW l234H,5678H VARB DB 3,4 AGLIN 4 VARD DD 12345678H EVEN BUFF DB 10 DUP(?) MESS DB ’HELLO’ MOV AX, OFFSET VARB + OFFSET MESS;AX = 4+16H = 1AH MOV AX, TYFE TYPE BUFF+TYPE MESS+TYPE VARD;AX = 1+1+4 = 06H MOV AX,SIZE VARW+SIZE BUFF+SIZE MESS;AX = 4+10+5 = 19 = 13H MOV AX,LENGTH VARW + LENGTH VARD;AX = 2+1 = 03H MOV AX,LENGTH BUFF + SIZE VARW;AX = 10+4 =14 = 0EH MOV AX,TYPE BIGIN;AX = FF02H (近) MOV AX,OFFSET BEGIN;AX = 1BH 段定義偽指令段名定位組合類別組名 .CODE _TEXT WORD PUBLIC ’CODE’.DATA _DATA WORD PUBLIC ’DATA’ DGROUP .STACK STACKPARA STACK ’STACK’ DGROUP 。 .model small .stack .data num equ 5 datalist dw 1,0,2,5,4,? .code .startup mov bx,offset datalist mov cx,num xor ax,ax again: add ax,[bx] inc bx inc bx loop again mov [bx],ax .exit 0 end。 stack segment para ‘stack’dw 512 dup(?) stack ends data segment dword array db 100 dup(?) data ends code segment ‘code’ assume cs:code,ds:data,es:data,ss:stack org 100h start: mov ax,data mov ds,ax mov es,ax mov di,offset array mov al,64h mov cx,100 cld rep stosb mov ax,4c00h int 21h code ends end start。解答; .model small .stack 256;定義堆棧段大小為256個字節(jié) .data anum dd 11223344h;定義兩個雙字的數(shù)(隨意) bnum dd 77553311h sum dd ?;定義結(jié)果,執(zhí)行后為:88776655h .code .startup xor si, si;相對于變量的位移量清零 mov cx, 2;分高低字分別相加,共兩次 clc;清零cf again:mov ax, anum[si];取第一個數(shù)的一個字(先低字后高字) adc ax, bnum[si];取第二個數(shù)的一個字(先低字后高字) mov sum[si], ax;存和的一個字(先低字后高字) inc si;修改位移量指向下一個字(加2) inc si loop again;cx=cx1 ,if cx0 ,jump again .exit 0 end 。 .startup xor si, si;位移量清零 mov al, bdata[si];取第一個數(shù) mov cx, num1;累加次數(shù) again: inc si;指向下一個數(shù) adc al, bdata[si];累加 loop again;如未完,繼續(xù)累加 mov sum, al;完了,存結(jié)果 .exit 0 end。 思路:設這四組從低位到高位分別放在AL、BL、CL和DL寄存器中。這里僅列出代碼段: mov bl, al;將al中的兩組分開 and al, 0fh;屏蔽高四位后送al mov cl, 4;原al中的數(shù)據(jù)邏輯右移4次送bl shr bl, cl mov dl, ah;將ah中的兩組分開 and dl, 0f0h;屏蔽低高四位后送dl mov cl, 4;原ah中的數(shù)據(jù)邏輯右移4次送dl shr dl, cl mov cl, ah;屏蔽高四位后送cl and cl, 0fh。 getkey: mov ah, 1;從鍵盤輸入,出口:al存鍵值 int 21h cmp al, ’a’;判鍵值是小寫字母? jb getkay cmp al, ’z’ ja getkay
點擊復制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1