簡體   English   中英

程序集8086-刪除行后的奇怪結果

[英]Assembly 8086 - strange result after removing a line

我今天有一個考試,在准備考試時,我解決了這個問題:

我們給了一個小程序,我們需要先說一下它的作用,然后再刪除*表示的行會發生什么。

data
A DB '1A2B3C4D'
B DB 10 DUP(?)
C DB 4
.CODE
MOV AX,@DATA
MOV DS,AX
XOR BX,BX
XOR SI,SI
XOR CX,CX
MOV CL,C
LOP1: MOV AL,A[BX]
AND AL,0FH ;*
MOV AH,A[BX+1]
LOP2: MOV B[SI],AH
INC SI
DEC AL
JNZ LOP2
ADD BX,2
LOOP LOP1
END: MOV AH,4CH

該程序非常簡單,我理解它的作用。 它將數組ABBCCCDDDD地址B (在數據段中定義)。

現在,我們問如果刪除帶有*的行會發生什么。 我認為什么都不會改變,因為AL是一個字節,而0Fh是一個字節,其中二進制只是11111111,所以AL AND 11111111 = AL,所以什么都不會改變。

但是據老師說,這會有所不同,因為如果我們沒有“ AND AL,0Fh”行,那么它將寫49倍的字母A,50倍的字母B,51倍的字母C,因為多數民眾贊成在這些字母的ASCII值。

我不明白為什么這是真的,我想解釋一下

這是不正確的:“ 0Fh是一個僅11111111的字節”

應該是FFh。 0Fh只是00001111。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM