㈠ 嵌入式匯編的超級簡單的小程序。 1個100分哦 加油回答。

初值是R3=4么
如果是的話R2,R3的值執行後專都是屬4
AREA test,CODE,READONLY
ENTRY

Loop

MOV R2,#5;
MOV R3,#4;
MOV R4,#3

SUBS R2,R3,R4,LSR #2

Stop
B Stop

END

㈡ 匯編簡單小程序

cmp [bx],0
這句有錯吧!沒有為內存單元[BX]知識長度,改為cmp byte ptr [bx],0試試!

㈢ 初學匯編,一個簡單小程序,在線等。。

data segment
x db -1
y db 2
z db 5
min db ?
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov al,x
cmp al,y
jnb next
mov al,y
next:
cmp al,z
jnb tj
mov al,z
tj:
mov min,al
mov ah,4ch
int 21h
code ends
end start

補充:
你再試試,我運行沒問回題呀。答

㈣ 求幾個匯編小程序的源代碼 要完整的

簡單的取系統時間小程序code segment
assume cs:code
start:
mov ah,2ch;2ch號功能調用,取系統時間:ch,cl,dh中分別存放時分秒
int 21h
calldisptime;調用disptime子程序顯示時間
exit:
mov ax,4c00h;結束程序,返回DOS
int 21h
disptime proc
mov al,ch ;小時的值賦給al
cbw ;al擴展成ax,用做除法的被除數
call bindec
mov dl,':';顯示":"
mov ah,02h
int 21h
mov al,cl ;分
cbw
call bindec
mov dl,':';顯示":"
mov ah,02h
int 21h
mov al,dh;秒
cbw
call bindec
ret
disptime endp
bindec proc
pushax ;保存寄存器的值(一定要的)
pushcx
pushdx
mov dx,0;被除數高16位置0
mov cx,10d;除數為10d
div cx
mov bx,dx ;先保存余數
mov dl,al ;顯示商(即十進制二位數的十位)
add dl,30h;轉換成Ascii碼
mov ah,02h;2號功能調用,顯示字元(十位)
int 21h
mov dx,bx ;恢復余數的值(十進制二位數的個位)
add dl,30h;轉換成ASCII碼
mov ah,02h;2號功能調用,顯示字元(個位)
int 21h
pop dx;恢復寄存器的值
pop cx
pop ax
ret;子程序返回
bindec endp
code ends
end start

㈤ 請教:用匯編語言寫一個小程序

DATAS SEGMENT
str1 db 255 p(?)
DATAS ENDS

STACKS SEGMENT
db 200 p(?)
STACKS ENDS

CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
MOV SI,OFFSET STR1
MOV CX,100H ;循環次數
AGAIN:
MOV AH,01H
INT 21H
CMP AL,24H ;回車的時候結束
JZ OUT1
MOV [SI],AL ;保持輸入的字元串
INC SI
LOOP AGAIN
OUT1:
MOV [SI],AL ;把回車作為結束符號
MOV SI,OFFSET STR1
MOV CX,100H
L1:
MOV BL,[SI]
CMP BL,24H ;檢查是否到結束了
JZ OUT2 ;結束就退出
CALL XCHGSTR
INC SI
LOOP L1
OUT2:
MOV CX,100H
MOV SI,OFFSET STR1
L2: MOV AL,[SI]
CMP AL,24H
JZ OUT3
MOV DL,AL
MOV AH,02H
INT 21H
INC SI
LOOP L2
OUT3:
MOV AH,4CH
INT 21H
XCHGSTR:
MOV AL,[SI] ;取出數據
OR AL,20H ;讓其第5位為1
MOV [SI],AL ;將其保存
RET
CODES ENDS
END START
這個程序是將不小於256個字母轉換的程序,如果你只要10個,你可以在輸入10個之後用$來結束就可以了

㈥ 用匯編語言編寫一個小小程序

; 本程序通過編譯,運行正確
Code Segment
Assume CS:Code,DS:Code
CR equ 000DH
LF equ 000AH
KBBack equ 0008H
; -----------------------------------------
; 功能:顯示指定地址(Str_Addr)的字元串
; 入口:
; Str_Addr=字元串地址(要求在數據段); 用法: Output Str_Addr
; 用法舉例:Output PromptStrOutput MACRO Str_Addr
lea dx,Str_Addr
mov ah,9
int 21h
EndM
; -----------------------------------------
; 功能:取游標位置
; 入口:無
; 出口:DH=行號,DL=列號
GetCursor Proc Near
PUSH AX
PUSH BX
PUSH CX
XOR BX,BX
MOV AH,3
INT 10H
MOV Cursor_Row,DH
MOV Cursor_Col,DL
POP CX
POP BX
POP AX
RET
Cursor_Row DB ?
Cursor_Col DB ?
GetCursor EndP
; -----------------------------------------
; 功能:置游標位置
; 入口:Cursor_Row=行坐標; Cursor_Col: 列坐標)
SetCursor Proc Near
PUSH CX
PUSH BX
PUSH AX
MOV DH,Cursor_Row
MOV DL,Cursor_Col
XOR BX,BX
MOV AH,2
INT 10H
POP AX
POP BX
POP CX
RET
SetCursor EndP
; -----------------------------------------
; 功能:輸出回車換行
enter_CTLF proc Near
push ax
push dx
mov ah,02h
mov dl,0dh
int 21h
mov dl,0ah
int 21h
pop dx
pop ax
ret
enter_CTLF endp
; -----------------------------------------
; 功能:輸出一個字元
; 入口:dl=要顯示的字元
enter_Chr proc Near
push ax
mov ah,02h
int 21h
pop ax
ret
enter_Chr endp
; -----------------------------------------
; 功能:鍵盤輸入一個N位的十進制數字,
; 用邏輯和移位指令將其轉換成二進制數並保存在指定的內存單元。
; 入口:N=數字位數;di=保存輸入的數字首地址
; 出口:轉換後的二進制數保存在di所指的單元
Input_Digit Proc Near
push dx
push cx
push bx
push di
lea di,@@Save_Tmp
push di
cld
mov cx,N
push cx
@@Input: call GetCursor ;取游標位置
mov ah,1 ;從鍵盤接受一個字元
int 21h
cmp al,CR ;若鍵入的是回車,已經鍵入的數字不足N位
jz @@ASC_Dec ;轉去處理已經鍵入的數字
cmp al,KBBack
jz @@KB_Back ;若是回空鍵,重新輸入

cmp al,'0'
jb @@KBBack ;若低於數字'0',重新輸入
cmp al,'9'
ja @@KBBack ;若低於數字'9',重新輸入
jmp @@Save_Dig
@@KB_Back: dec Cursor_Col
inc cx
dec di
@@KBBack: call SetCursor ;置游標位置
jmp @@Input
@@Save_Dig: and al,0fh ;轉換成二進制數

mov al,01h

stosb ;保存
loop @@Input ;接受下一個數字
@@ASC_Dec: mov ax,cx
pop cx
pop si
sub cx,ax ;實際輸入的數字位數
xor bp,bp
xor dx,dx
xor ax,ax
jcxz @@Save_Ret ;若直接回車,沒有輸入任何數字,按輸入'0'處理
dec cx ;實際輸入的數字位數減1,准備把輸入的這一串數字轉換成二進制數
jcxz @@One_Digit ;若輸入的數字只有一位,轉去直接保存這個二進制數
mov bx,10
@@Mul_Ten: lodsb
cbw
add ax,bp
mul bx
mov bp,ax
loop @@Mul_Ten
@@One_Digit:lodsb
cbw
add ax,bp
@@Save_Ret: pop di
stosw
pop bx
pop cx
pop dx
ret
@@Save_Tmp db 16 p(?)
Input_Digit EndP
; -----------------------------------------
; 功能:把AX中的二進制有、無符號數轉換成顯式的十進制ASCII碼,並送顯示屏顯示
; 入口:AX=二進制數
; 出口:在當前游標位置顯示轉換後的ASCII碼數字
Dec_ASCII Proc Near
push dx
push bx
push di
.IF Signed == 'y'
mov @@Carry_Yes,'+'
test ax,8000h
jz $+9
mov @@Carry_Yes,'-'
neg ax
.Endif
mov bx,10
lea di,@@Temp_Save[6]
mov byte ptr [di],'$'
dec di
cld
@@Divide: xor dx,dx
div bx
or dl,30h
mov [di],dl
dec di
test ax,0ffffh
jnz @@Divide
.IF Signed == 'y'
cmp @@Carry_Yes,'-'
jnz $+6
mov byte ptr [di],'-'
dec di
.Endif
inc di
push di
pop dx
mov ah,9
int 21h
pop di
pop bx
pop dx
ret
@@Temp_Save db 7 p(?)
@@Carry_Yes db '+'
Dec_ASCII EndP
; -----------------------------------------
N equ 3 ;輸入的十進制整數位數
Signed db 'y' ;是否有符號數。'y'=有符號數,'n'=無符號數
Number1 dw ?
Number2 dw ?
Number3 dw ?
Period_Aft db 3 ;保留小數位數
prompt_title db 's=(a*b+c)/a',0ah,0dh,'$'
prompt_A db 'Please Input A: $'
prompt_B db 'Please Input B: $'
prompt_C db 'Please Input C: $'Start: push cs
pop ds
push cs
pop es ;使數據段、附加段與代碼段同段
; -----------------------------------------
; 輸入兩個十進制數
Output prompt_title;提示題目
Output prompt_A ;提示輸入第一個數
lea di,Number1 ;變數Number1的地址
call Input_Digit ;從鍵盤接受一個N位數字
call enter_CTLF ;輸出一個回車、換行
Output prompt_B ;提示輸入第二個數
lea di,Number2 ;變數Number2的地址
call Input_Digit ;從鍵盤接受一個N位數字
call enter_CTLF ;輸出一個回車、換行
Output prompt_C ;提示輸入第三個數
lea di,Number3 ;變數Number3的地址
call Input_Digit ;從鍵盤接受一個N位數字
call enter_CTLF ;輸出一個回車、換行
call enter_CTLF ;輸出一個回車、換行
; -----------------------------------------
; 運算

mov dl,'s'
call enter_Chr ;顯示一個s

mov dl,'='
call enter_Chr ;顯示一個等號

mov ax,Number1
imul Number2 ;Number1*Number2→AX
add ax,Number3 ;(Number1*Number2+Number3)→AX
idiv Number1 ;(Number1*Number2+Number3)/Number1→AX

call Dec_ASCII ;顯示和
call enter_CTLF ;輸出一個回車、換行
; -----------------------------------------Exit_Proc: mov ah,4ch ;結束程序
int 21h
Code ENDS
END Start ;編譯到此結束

㈦ 匯編語言寫的小程序

我已經發給你了 收到記得給分啊